类型定义
typedef int (*funcptr) ( ); 是什么意思
这个的意思是定义了一个funcptr类型,其是指向返回值为int的无参的函数指针funcptr fp1 = main;
结构体类型定义下的问题
typedef struct {
char *item;
NODE next;
} *NODE;这个代码在编译时报出错误信息,说是未声明的调用,这是常见错误
因为typedef 的前提是已经存在的类型的别名,可是在编译时发现,NODE的这个类型并不存在,所以就会编译报错
纠正后的代码是typedef struct node {
char *item;
struct node *next;
} *NODE;复杂声明解读方法
char *(*pfpc)();
- *(*pfpc)() 是一个char;
- (*pfpc)() 是一个指向char 的指针;
- (*pfpc) 是一个返回值为char指针的函数
- pfpc 是一个指向返回值为char 指针的函数的指针
如何获得一个数组的大小
如果int array[64] = {1,2,3}; extern int array[]; //如果在extern的文件中使用sizeof 会发现得到的只是指针的字节大小,而不是这个数组的
所以在其他文件中得到数组的大小方法有以下几种
1. 可以另外的定义一个int 的变量用于储存数组的元素个数
2. 使用宏来代表数组的大小
3. 使用哨兵元素,例如int array[16] = {1,2,3,-1}这个-1就是数组中的哨兵,可以得到数组的大小