sizeof的作用,可用来求数据类型的大小,包括内置类型和自定义类型等,如下所示:
typedef struct node {
int val;
int lnode;
int rnode;
int parent;
}NODE;
char a[10];
printf("%d %d %d\n", sizeof(int), sizeof(a), sizeof(node));
输出结果:
sizeof在对指针使用时,其在和数组使用上是完全不同的,如:
char a[100];
char *b = (int*)malloc(sizeof(char)*100);
printf("%d %d\n", sizeof(a), sizeof(b));
输出结果:
之所以为上述结果,是因为b为指针类型,其大小为4字节,所以sizeof求的是指针的大小,并不是指针指向的内存空间大小。
另外特别容易出错的是,数组名在作为函数形参时,会退化为指针,因此此时求其大小也是得不到预期结果的(实际结果为指针大小,即4字节)。