sizeof 的使用

来源:互联网 发布:广州网络维护maxingit 编辑:程序博客网 时间:2024/06/14 00:49

sizeof() :关键字,并非函数,其作用为返回一个对象或者类型所占的内存字节数。
下面内容主要介绍sizeof()在一纬数组中的用法。
备注:*除sizeof(单个数组名)以及“”&数组名“”中数组名表示整个数组,其余所有数组名均表示该数组的首元素地址;在32位系统下。

#include <stdio.h>  int main(){    int a[] = { 1, 2, 3, 4 };    printf("%d\n", sizeof(a));  //16  数组名单独出现代表整个数组    printf("%d\n", sizeof(a + 0));  //4 等价于a[0]    printf("%d\n", sizeof(*a));  //4 等价于a[0],a代表数组第一个元素的地址,解引用找到第一个元素    printf("%d\n", sizeof(a + 1));  //4 等价于a[1]    printf("%d\n", sizeof(a[1]));   //4     printf("%d\n", sizeof(&a));  //4 &a 取到的地址为整个数组的地址    printf("%d\n", sizeof(&a + 1)); //4 &a+1 数组a接下来位置的地址    printf("%d\n", sizeof(&a[0])); //4 &a[0] 数组首元素地址        printf("%d\n", sizeof(&a[0] + 1));//4    &a[0]+1 数组第二个元素地址    return 0;}
#include <stdio.h>  int main()  {      char *p="abcdef";      printf("%p", p); // 00BD58584    printf("%d\n",sizeof(p));  //4  p 代表字符数组的地址    printf("%d\n",sizeof(p+1));  //4 p+1 字符第二个元素b的地址     printf("%d\n",sizeof(*p));  //1  等价于*(p+0);对数组第一个元素解引用,找到a     printf("%d\n",sizeof(p[0]));  //1  等价于*(p+0);对数组第一个元素解引用,找到a    printf("%d\n",sizeof(&p));  // 4 &p 取到表整个数组的地址    printf("%d\n",sizeof(&p+1));  // 4  &p+1 取到数组下个位置的地址    printf("%d\n",sizeof(&p[0]+1));  // 4  &p[0]+1 取到数组第二个元素b的地址    return 0;  }  
#include <stdio.h>  int main()  {      int a[3][4]={0};  //3行4列的数组    printf("%d\n",sizeof(a));  // 48 a代表整个数组     printf("%d\n",sizeof(a[0][0]));   //4 a[0][0]代表首元素      printf("%d\n",sizeof(a[0]));  // 16 a[0]=*(a+0) 代表第一行所有元素     printf("%d\n",sizeof(a[0]+1)); //4 第二个元素地址    printf("%d\n",sizeof(a+1));  //4  &a[1]=&*(a+1)=a+1 为第二行的地址    printf("%d\n",sizeof(&a[0]+1)); //4 &a[0]代表第一行的地址,然后加1代表第二行的地址    printf("%d\n",sizeof(*a));  //  16 *a=*a[0] 第一行所有元素    printf("%d\n",sizeof(a[3]));  //16 a[3]=*(a+3) 第四行所有元素所占内存    return 0;  }  
1 0
原创粉丝点击