2023-03-23

数组名的含义:

1.sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小

2.&数组名,这里的数组名表示整个数组,取出的是整个数组的地址

3.除此之外所有的数组名都表示首元素的地址


#include<stdio.h>

int main()

{

int a[3][4]={0};

printf("%d\n",sizeof(a));    //48=3*4*sizeof(int)

printf("%d\n",sizeof(a[0][0]));  //4 --第一行第一个元素

printf("%d\n",sizeof(a[0]));    //16--第一行整个元素

printf("%d\n",sizeof(a[0]+1));  //4 --a[0]作为数组名并没有单独放在sizeof内部,也没取地址

//a[0]就是第一行第一个元素的地址,

//a[0]+1就是第一行第二个元素的地址

printf("%d\n",sizeof(*(a[0]+1)));  //4 ---第一行第二个元素

printf("%d\n",sizeof(a+1));        //4 ---a是二维数组的数组名,并没有取地址,

//也没有单独放在sizeof内部,所以a表示二维数组首元素的地址,

//即第一行的地址,a+1就是二维数组第二行的地址。

printf("%d\n",sizeof(*(a+1))); //16---第二行的大小

printf("%d\n",sizeof(&a[0]+1));  //4---a[0]表示第一行的数组名,&a[0]取出的是第一行的地址

//&a[0]+1就是第二行的地址

printf("%d\n",sizeof(*(&a[0]+1))); //16----第二行的大小

printf("%d\n",sizeof(*a));          //16---a表示第一行的地址 *a就是第一行{*(a+0)-->a[0]}

printf("%d\n",sizeof(a[3])); //16-----a[3]是第四行数组名(如果有的话)

//所以其实不存在,也能通过类型计算大小的。

return 0;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容