C:关于sizeof(),数组地址,指针

 摘要:

数组名 arr三种情况:

①sizeof(arr); 求整个数组大小

②&arr :取整个数组的地址,其值表现为数组首元素的地址(二维数组首元素为一行元素)

③其他情况:表示数组首元素的地址。

 

arr[2]=2[arr]=*(arr+2)

 

指针:指针存放的是地址,标识一块地址空间,指针让内存访问更方便。

指针(地址)的大小在32位是4字节 ,在64位下是8字节。

#include<stdio.h>
int main()
{
    int b[10]={1,2,3,4,5};
    printf("%d\n",sizeof(b));//整个数组大小20字节
    printf("%d\n",sizeof(b+0));//第一个元素的地址4字节(这里b为数组首元素地址)
    printf("%d\n",sizeof(*b)); //b[0],4字节          (这里b为数组首元素地址)
    printf("%d\n",sizeof(b+1));//b[1]4字节          (这里b为数组首元素地址)
    printf("%d\n",sizeof(*&b));//取整个数组的内容 5*4=20字节
    printf("%d\n",sizeof(&b+1));//从数组首地址跳过整个数组后的地址
    printf("%d\n",sizeof(&b[0]+1));//第二个元素的地址4字节


 
	int a[3][4] = { 0 };
	printf("%d\n", sizeof(a));//sizeof+数组名 表示求整个数组大小48
	printf("%d\n", sizeof(a[0][0]));//求第一个元素的大小
	printf("%d\n", sizeof(a[0]));//求第一行元素大小为4*4=16个字节

	printf("%d\n", sizeof(a[0]+1));//只要数组名不是单独放在sizeof内,也不是&数组名,就代表首元 
                                   //素地址,这里为第一行首元素地址,+1后即第二个元素地址4bit

	printf("%d\n", sizeof(a+1));//二维数组名表示首元素的地址(即第一行元素地址),+1即第二行地 
                                //址,4字节

	printf("%d\n", sizeof(&a[0]+1));//&a[0]为第一行地址,+1即第二行的地址,4字节
	printf("%d\n", sizeof(*a));//第一行(数组首元素),四个元素16字节
	printf("%d\n", sizeof(a[100]));//a为3*4的数组,a[100]为形如a的数组的一行大小 4*4=16字节
	

	return 0;
}

 

第一次写,按自己想法写了一些,有问题还请大佬们能指出,感激不尽。 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值