C——浅析数组名的含义

在C语言中,数组有着极其重要的地位,它不仅是一种存放同一类型数据的集合,而且和指针也有着一定的关联。在这其中,数组名的含义与使用也是有一定学问的,总体来说可以概括为以下两点:

1. sizaeof()和取地址&后面单独跟数组名,此时数组名代表整个数组;

2. 除以上两种情况外,数组名表示数组首元素的地址;

接下来我将通过展示一些实例来帮助大家更好地理解和使用数组名。

1 一维整型数组的相关内容

第一组代码如下:

对于上面的5行代码,我们逐个分析:

1)因为a是一个整型的一维数组,且a单独放在sizeof()中,此时数组名a代表整个数组,sizeof(a)求的是整个数组的大小,故打印出来的结果为16

2)a+0作为一个整体放在sizeof()中,此时a表示的是数组首元素的地址,因此sizeof()求的是数组首元素地址的大小。而对于地址的大小,如果是32位处理器,其内存大小位四个字节4个;如果是64位处理器,其内存大小为8个字节。故最终打印出的结果为4/8

3)*a放在sizef()中,a表示首元素的地址,对a进行解引用操作,所以sizeof()求的是数组第一个元素的大小,故打印结果为4

4)a+1作为一个整体放在sizeof()中,此时a表示的是数组首元素的地址,因此sizeof()求的是数组第二个元素地址的大小,故最终打印出的结果为4/8

5)a[1]表示数组的第二个元素,sizeof()求的是数组第二个元素的大小,故打印结果为4

实际运行结果如下:

第二组代码如下:

                                         

对于后续的结果,之后的分析内容统一以32位处理器来看待,不再重复赘述。

分析如下:

1)&a放在sizeof()中,由于a单独跟在取地址&的后面,此时a表示的是整个数组的大小,而sizeof()求的是指向整个数组大小的地址的内存的大小,其本质上仍然是一个地址,故打印结果为4

2) &a+1放在sizeof()中,由于a单独跟在取地址&的后面,此时a表示的是整个数组的大小,&a+1表示整个数组大小的地址往后移一个数组大小的位置,sizeof()仍然求的是一个地址,故打印结果为4

3)&a[0]表示求数组首元素的地址,sizeof()求的是数组首元素的地址的内存的大小,故打印结果为4

4)&a[0]+1表示数组首元素的地址再往后移一个位置,即数组第二个元素的地址,sizeof()求的仍然是一个地址,故打印结果为

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值