C语言中简单的sizeof()函数
#include <stdio.h> #include <stdlib.h> void fun(int b[]){ printf("%i ",sizeof(b));//4 } void fun1(char b[]){ printf("%i ",sizeof(b));//4 } int main(int argc,char** argv) { int *p = NULL; int a[100]; int b[100]; printf("%i ",sizeof(p));//4 printf("%i ",sizeof(*p));//4 printf("%i ",sizeof(a)); //400 printf("%i ",sizeof(a[100])); //4 printf("%i ",sizeof(&a));//4 printf("%i ",sizeof(&a[0]));//4 fun(b[100]); puts("-----------hua li de fen ge xian --------------"); char *q = NULL; char c[100]; char d[100]; printf("%i ",sizeof(q));//4 printf("%i ",sizeof(*q));//1 printf("%i ",sizeof(c)); //100 printf("%i ",sizeof(c[100])); //1 printf("%i ",sizeof(&c));//4 printf("%i ",sizeof(&c[0]));//4 fun1(d[100]);//4 puts("!!!Hello World!!!"); /* prints !!!Hello World!!! */ return 0; }
闲来无事,回顾一下sizeof(),该函数的主要功能是计算变量的字节数。首先,字节数与位数一定要弄清,8字节 = 1位,int 型站4位,32个字节。
OK,根据上面的例子你会发现,在Linux 32位系统的C中,地址永远占一位,也就是4个字节,&a,&a[10],&c,&c[0]都是地址,所以是1位,4个字节。
sizeof(a[100]) 与sizeof(c[100])分别表示 int,char类型的数,因此 4==sizeof(a[100]) 与1 == sizeof(c[100])。
在看看fun()函数中的sizeof(b)== 4 ,因为b在这里是一个指针,表示一个地址,相当于fun(int *b),这样传值b就相当于是数组的指针,所以为4.
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。