sizeof 的使用

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;  
}  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值