C語言二維陣列的指標及首位址問題

2021-06-22 15:42:40 字數 977 閱讀 4286

若arr是一維陣列名,我們知道*arr就是arr[0],就是*(arr+0)。因為arr是陣列的首位址,*arr就是取首位址所指元素,就是陣列的第乙個元素。

同樣的道理,arr是二維陣列名時,*arr也是取arr的第乙個元素,但是此時arr所指的元素是乙個一維陣列,所以,實際上arr所指元素是一維陣列的首位址。

就按arr[3][4]這個例子來看:3行4列陣列arr可以理解為arr[0],arr[1],arr[2]這三個一維陣列(陣列含有4個元素)構成的二維陣列,*arr就是arr[0],而arr[0]就是第0行的首位址,也就是第乙個陣列的首位址。*(arr+i)就是arr[i],就是第i行的首位址。

如果現在定義arr是字元型陣列,輸出*arr(也就是第一行的首位址)為0000,再輸出*(arr+1)就是0004,而不是0001,就可以說明arr是指向一維陣列的指標。

例子1:

// c++中的二維陣列.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

int _tmain(int argc, _tchar* argv)

,,};

printf("%d\n", sizeof(a)); //48

printf("%d\n", sizeof(a[0])); //16

printf("%d\n", sizeof(a[1])); //16

printf("%d\n", sizeof(a[2])); //16

printf("*************************\n");

printf("%d\n", sizeof(*a)); //16

printf("%d\n", sizeof(*(a+1))); //16

printf("%d\n", sizeof(*(a+2))); //16

for(int i=0; i <3; i++)

return 0;

}

C ,二維陣列與指標,二維陣列名是不是首位址

答 是首位址,是陣列的首位址,雖然值等於第乙個元素的位址,但是不代表元素的位址.1.陣列名都是位址常量,都是首位址,可以直接付給指標,但是一維陣列和二維陣列名 賦予指標時有點不一樣.2.陣列名不是指標,它僅僅是個 位址常量 3.一維陣列的陣列名 直接付給指標,如 int a 3 int p a 4....

C語言二維陣列指標(指向二維陣列的指標)

二維陣列的定義 int matrix 見圖的操作那篇文章裡面的定義 或者這篇文章提供了另外一種方法。二維陣列在概念上是二維的,有行和列,但在記憶體中所有的陣列元素都是連續排列的,它們之間沒有 縫隙 以下面的二維陣列 a 為例 int a 3 4 從概念上理解,a 的分布像乙個矩陣 0 1 2 3 4...

C 二維陣列 取位址 複製給 二維指標

本來應該是個簡單的問題,但是我就不明白了,為什麼會段錯誤了。include define uint32 unsigned intuint32 ntype1 xy 11 2 intmain 提示aaaa.cpp in function int main aaaa.cpp 11 9 error cann...