为什么可以不定义数组名直接用指针名当数组名输出呢?

img


为什么指针名可以输出赋值给的数组呢?并不是采用*(a+n)输出而是直接a[n)输出

数组名的本质就是数组首元素的地址
num = a;也就是是说把a中存储的数组首元素的地址(15)赋值给num。
num[4]虽然字面上看着是这样,其实操作系统在读取到它时num[4]会被转化为*(num+4),也就是访问数组中下标为4的值

*(a+n)和a[n]是等价的,你可以这样子用,或者说,这个本来就是记忆性的东西,创建C语言的人规定的

num指针指向了a这片区域,由于数组是一片连续的空间,所有num指针指向的是a数组中第一个元素的地址。
num[4]等同于*(num + 4),也就是将指向a第一个元素的指针向后移4位也就是23的位置。然后将23这个地址连同值赋值给了temp,然后按整数输出