在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()求的仍然是一个地址,故打印结果为


1792

被折叠的 条评论
为什么被折叠?



