sizeof使用误区

    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字节)。

发布了33 篇原创文章 · 获赞 6 · 访问量 559

猜你喜欢

转载自blog.csdn.net/weixin_43519984/article/details/103695949