一维数组名与二维数组名的关联
生活随笔
收集整理的這篇文章主要介紹了
一维数组名与二维数组名的关联
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.一維數組名與二維數組名的關系之于普通指針與數組指針的關系
2.首先數組名編譯器會隱式變換看做指針常量,因此a[i]與a+i是等價的。
a+i返回由i指定的行地址,假設元素類型為char,則行指針類型為char ()[n],其中n為列寬,即每行元素數量。當行指針指向一個地址時,此時該行首元素地址與行地址是一致的,但是類型不同,這個是理解二維數組指針的關鍵。
星號在指針前含義為取指針指向內存中的值,但是由于行指針指向的是一行元素整體而不是單個元素,因此(a+i)返回i指定行的所有元素,但是一行元素是不可能以值的形式直接獲得,所以編譯器返回的是一維數組指針char ,所以再此情形下你可以理解為星號是將行指針轉換為普通一維數組指針,即 char ()[n]轉換為 char *。
&a[i]返回i指定行的第一元素地址,與&a[i][0]等價。
對于&a[i]是此行第一元素的值,是因為&a[i]等于i行0列元素的地址的地址,則等于i行0列元素的地止。(并且&&a[i]也不存在)
由下面一段代碼可見:
#include<stdio.h>
int main()
{
int a[2][5];
printf("%p\n",&a[1]);
printf("%p\n",&a[1][0]);
printf("%p\n",a[1]);
return 0;
}
總結
以上是生活随笔為你收集整理的一维数组名与二维数组名的关联的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: exit()函数学习
- 下一篇: 指针与数组名的关系