char *p1,p2;
表明p1是一个指向char类型的指针,p2被声明成了普通char类型的变量。
char *p;
*p=malloc(10);
上面这两行是错误的
这里声明的指针是p而不是*p。
声明风格
对于全局变量,定义是真正分配空间并赋初始值(如果有)的声明。
这些是声明
extern int i;
ectern int f();
这些是定义
int i=0;
int f()
{
return 1;
}
当希望在多个源文件中共享变量或函数时,需要确保定义和声明的一致性。最好的安排是在某个相关的.c文件中定义,然后在.h文件(头文件)中进行外部声明,在需要
的时候只要包含对应的头文件即可。
extern 存储类型extern只对数据声明有意义。对于函数的声明,它可以用作一种格式上的提示,表明函数的定义可能在另一个源文件中。
extern int f();与int f();之间没有实质的区别。
对于用户定义类型,typedef和#define有什么区别?
一般来说,最好使用typedef,部分原因是它能正确处理指针类型。
typedef char *string_t;
#define string_d char *
string_t s1,s2;
string_d s3,s4;
s1、s2、s3都被定义成了char*型,s4却被定义了char型。