数组与指针的一些关系

本文主要是理解这几个符号的意思a, a[0], &a, &a[0](前提是定义了数组int a[10]);

 

1、a代表的是数组名,a作左值的时候,表示的数组a[10]的整个内存空间的大小(也就是10*sizeof(int)这么多个字节)。a作右值的时候表示的是数组首元素的首地址,它的值和&a[0]的值是一样的,意义也完全一样,完全可以互相代替。同时因为在C语言中规定,数组是不能够整体访问的,所以a是不能够作左值的。

 

2、a[0]表示的数组的第0个元素。当a[0]作左值的时候,表示的是a[0]这个元素的内存空间,也就是sizeof(int)个字节的大小。当a[0]作右值的时候,表示的是a[0]这个地址空间所存放的数(房子里面住的人)。

 

3、&a表示的是数组的首地址,它的数值和数组首元素的首地址&a[0]、a完全一样,但是意义不一样。因为意义不一样,所以导致他们在参与运算的时候有不同的表示。&a是常量,不能做左值。

 

特别注意区分a和&a,虽然两个的数值的一样的,但是他们的意义不一样,a代表数组的首地址(意义是数组整个内存空间大小(10*sizeof(int))的首地址),&a代表的是数值首元素的首地址(意义是数组的首元素的内存空间大小(sizeof(int))的首地址)

 

转载于:https://www.cnblogs.com/xing-ting/p/10212296.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值