C语言中数组名的语意

本文探讨了C语言中数组名的三种语意:表示整个数组的大小、表示数组首元素的地址以及代表整个数组的地址。数组名作为右值使用,不能做左值,其值等同于数组首元素的地址,但含义有别。
摘要由CSDN通过智能技术生成

1.数组名表示整个数组的大小

代表整个数组时只能做右值,不能做左值

void main()
{
  int arr[10]={}; //初始化一个数组
  int size=sizeof(arr);//此时arr代表整个数组
}

2.数组名表示数组首元素的地址

代表数字元素的地址时也只能做右值

void main()
{
  int arr[10]={}; //初始化一个数组
  int* i_ptr0=arr;//此时arr表示arr[0]地址
  //上述等价与下式
  int* i_ptr1=&arr[0];
}

3.代表整个数组的地址

代表整个数组的地址时值和arr[0]的地址的值相同,但是表达的含义不同

void main()
{
  int arr[10]={}; //初始化一个数组
  int (*a_ptr)[10]=&arr;//此时arr表示整个数组的值;
  int *i_ptr=arr;//此时arr表示数组首地址;
  //下面两行打印出相同的值;
  printf("&arr=%p",&arr);
  pritnf("arr=%p",arr); 
  //下面两行打印出不同的值
  printf("&arr+1=%p",&arr+1); //此时的值为arr+sizeof(arr);
  printf("&arr[1]=%p",i_ptr+1);//此时的值为arr+sizeof(int);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值