C语言中简单的sizeof()函数

来源:互联网 发布:ipad如何下载软件 编辑:程序博客网 时间:2024/06/06 02:58
#include <stdio.h>#include <stdlib.h>void fun(int b[]){printf("%i\n",sizeof(b));//4}void fun1(char b[]){printf("%i\n",sizeof(b));//4}int main(int argc,char** argv) {int  *p = NULL;int a[100];int b[100];printf("%i\n",sizeof(p));//4printf("%i\n",sizeof(*p));//4printf("%i\n",sizeof(a)); //400printf("%i\n",sizeof(a[100])); //4printf("%i\n",sizeof(&a));//4printf("%i\n",sizeof(&a[0]));//4fun(b[100]);puts("-----------hua li de fen ge xian --------------");char *q = NULL;char c[100];char d[100];printf("%i\n",sizeof(q));//4printf("%i\n",sizeof(*q));//1printf("%i\n",sizeof(c)); //100printf("%i\n",sizeof(c[100])); //1printf("%i\n",sizeof(&c));//4printf("%i\n",sizeof(&c[0]));//4fun1(d[100]);//4puts("!!!Hello World!!!"); /* prints !!!Hello World!!! */return 0;}

闲来无事,回顾一下sizeof(),该函数的主要功能是计算变量的字节数。首先,字节数与位数一定要弄清,4字节 = 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.


0 0