C语言中简单的sizeof()函数
2016-09-18 23:54
274 查看
#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));//4 printf("%i\n",sizeof(*p));//4 printf("%i\n",sizeof(a)); //400 printf("%i\n",sizeof(a[100])); //4 printf("%i\n",sizeof(&a));//4 printf("%i\n",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\n",sizeof(q));//4 printf("%i\n",sizeof(*q));//1 printf("%i\n",sizeof(c)); //100 printf("%i\n",sizeof(c[100])); //1 printf("%i\n",sizeof(&c));//4 printf("%i\n",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.
相关文章推荐
- C语言 sizeof函数详解
- linux下C语言之调用简单函数
- 用C语言的可变参函数实现一个简单的printf函数
- C语言简单写日志函数
- C语言简单函数递归调用问题
- 一个简单用C语言实现的日志函数
- C语言sizeof()函数
- sizeof不是函数,C语言中sizeof的陷阱
- C语言其实不简单:sizeof
- 一个简单用C语言实现的日志函数
- C语言中sizeof函数用法详解!
- C语言 sizeof函数详解
- C语言简单实现sizeof功能代码
- 关于C语言中函数传递机制简单小结
- C语言中三角函数的简单应用——HDU2080
- tc2.0环境下的C语言研究-简单使用寄存器并打印函数的偏移地址
- c语言两简单的函数------字符输入输出------【getchar、putchar(parm)】
- C语言 sizeof函数详解
- C语言学习入门 (三) sizeof 函数、内存地址、数组
- C语言中函数指针、指针函数、回调函数的简单含义