1樓:匿名使用者
如果把陣列名當作引數傳遞給函式時,那麼編譯器將認為傳遞的是指標。在函式中同樣可以操作該指標,訪問陣列元素,不管它是多少維陣列。比如:
int iarray[10];
void f1(int *p1);
如果這樣呼叫f1(iarray),那麼p1[0]等於iarray[0],p1[1]等於iarray[1]......以此類推
int iarray[10][10];
void f2(int *p2);
如果這樣呼叫f2((int *)iarray),那麼p2[0]等於iarray[0][0],p2[1]等於iarray[0][1],...,p2[10]等於iarray[1][0],...以此類推
2樓:
double a[10][10];
function(a[10]);
function(a[10][10]);
3樓:
二維陣列就是型別 ** 比如 int ** char **
4樓:匿名使用者
可以用指標,跟一維用法一樣.
c++二維陣列名指的是陣列的首地址嗎? 40
5樓:祿學校寄藍
是的,你可以試試看,
比如int
arr[4][4]=;
cout<<(arr
==&arr[0][0]);
//比較一下陣列名和陣列第一個元素地址的值比較一下,看是不是相等
6樓:匿名使用者
陣列名所代表的資料型別是指標常量,二維陣列就是指標的指標——二重指標,二重指標所存的內容就是一重指標的地址。所以二維陣列代表的是二重指標常量,所儲存的內容是「一重指標們」的首地址即第一個一重指標的地址
7樓:匿名使用者
是的,比如二維陣列a[m][n],陣列名a是陣列的首地址,它相當於a[0],也就是第一行的首地址,主意在二維陣列中a[0] a[1]...都是地址
8樓:匿名使用者
可以這麼用,但是多維陣列理解起來要麻煩一些
9樓:一生何求
答:二維陣列名是陣列的首地址
1、眾所周知一維陣列名代表陣列的首地址
2、那麼二維陣列名是否代表二維陣列的首地址呢?答案是肯定的,因為二維陣列的本質是一維陣列,它在記憶體中的儲存也是按照一維陣列的方式儲存的。所以陣列名始終代表陣列的首地址。
3、我們可以程式設計取地址確認是否正確.答案輸出yes。
int main()
如果c++;cout<<"yes"< return 0;} 10樓:匿名使用者 不是,你可以用指標的形式 指向指標的指標和二維陣列名等同嗎? 11樓:匿名使用者 int a[2][3]; a的型別相當於 int (*)[3]而不是int ** int a[2][3]; int (*b)[3] = a; 這是可以的 ---int *p[3]; 陣列型別變數參與運算的時候視為指標。運算時的p[0],這裡是指標的運算子,陣列型別不會直接參與運算。 p[0]就是 *(p + 0) 也就是*p 顯然p可以看成int **型別的 ---只有運算的時候 int *才是int **,宣告的時候int *p[3]和int **p是不一樣的。int **p是一個指標的空間,裡面存的資料是int **,int *q[3]是3個指標空間裡面存的資料是int *。 p用的時候是直接使用它儲存的資料,q在用的時候使用的是宣告的變數的首地址,因為那個地址儲存的資料是int *所以地址的型別也就是int **。 p: |(int **)| q: |(int *)|(int *)|(int *)| 陣列在運算時候轉意為指標,但是陣列變數本身不等於指標。p你可以用int **賦值,但是q不可以,因為q轉意得到的int **並不是儲存在變數裡的。 12樓: int *p[2]; int *q[3]; int **z; p = q;// 錯誤 盯住這個錯誤不放,應該能夠理解你所說的問題那個 z ,就更沒譜了 ^_^ 為何二維陣列的陣列名是指標的指標? 13樓:匿名使用者 是指標的指標,例如 int **a; a[i]的內容就是一維陣列指標 a[i][j]就是一維陣列指標中的元素 這樣想不是很合理麼? c語言中的二維陣列名是一個二重指標嗎? 14樓: 應該不是的,簡單來說,陣列名,不管是多少維度的都是採用名稱**表相應的存放地址。雖然二重指標也是存放資料的地址但是其是間接的存放。就打個比方,二重指標就如一個廠家有好多貨要賣出去。 而自己又沒有銷售渠道,只好通過**商來提貨,通過分銷商來賣給消費者;二維陣列就如廠家有貨而且自己有渠道直接銷往消費者。 不知這樣說是否容易理解。 15樓:瀚漠 不是二級指標p也可以解釋為指標的指標,即p內儲存的值實際上還是一個指標,計算: *p的值實際上是一個指標值,那麼 *(*p)即二級指標指向的最終值 對於二維陣列a[2][2],a也是一個地址,並且這個值也等於a[0],也等於a[0[0]的地址,即&a[0][0],由此看來對a取地址的值是一個變數值(不是指標),所以a並不是一個二級指標,最多算一個一級指標。 16樓:匿名使用者 1、二維陣列名不是二級指標,它只是一個比較特殊的常量指標。包括三維,四維,乃至n維陣列也是如此。只要是陣列,那麼它就是一個普通的常量指標。 2、二級指標p也可以解釋為指標的指標,即p內儲存的值實際上還是一個指標,計算: *p的值實際上是一個指標值,那麼 *(*p)即二級指標指向的最終值。 對於二維陣列a[2][2],a也是一個地址,並且這個值也等於a[0],也等於a[0[0]的地址,即&a[0][0],由此看來對a取地址的值是一個變數值(不是指標),所以a並不是一個二級指標,最多算一個一級指標。 c語言中二維陣列名是不是可以看作指標陣列名? 17樓:安心播音 不可以,二維陣列要看做「陣列的陣列」。 (以如下定義為例:int a[4]; int * p;)給你個對於指標和陣列的正確理解吧: 定義的不同:c 裡,指標和陣列是不同的型別,不要把陣列名看做「常指標」。所以 sizeof(a) 和 sizeof(p) 值是不同的。 操作:除宣告外,中括號操作符僅用於指標,如 p[0],p[5] 等。當使用 a 時,要看做 (int*)a 。 比如 a[0] 要看做 ((int*)a)[0] , *a 要看成 *(int*)a 。(除 sizeof 以及類似操作以外) 所謂的「二維陣列」,「二級指標」,「指標陣列」,以及「陣列指標」的理解應該為: 基礎型別為陣列的陣列, 基礎型別為指標的指標, 基礎型別為指標的陣列, 基礎型別為陣列的指標。 比如二維陣列定義為 int b[3][4]; ,可以看做: typedef int a[4]; a b[3]; 其它類推。 18樓: 二維陣列的名稱就是指標的指標, 對於一維陣列,它的陣列名,就是它存放記憶體的首地址 19樓:匿名使用者 例如:二維陣列名是一個指標,但是說它是常量的意思是它本身不可更改:如你定義int a[34][3],a確實是個指標,*a指向陣列中第一個整數;但是你不能通過a++操作使在此操作後a指向陣列中第二個整數,而普通指標(int a[12];int *b=a;b 就是普通指標)可以這麼操作的,所以說它是「指標常量」; c++指標與多維陣列問題 20樓:扈懷煒 其實二維陣列名是一個陣列指標,那什麼是陣列指標?陣列指標是指向一個陣列首地址的指標,它實際上也是一種指標型別,類似於函式指標。所以不能把一個陣列指標直接複製給一個指標。 21樓:匿名使用者 二維陣列可能是指向指標的指標,所以你要強制轉換一下才可以。 也就是p是int *型別的,但a的話是int **型別的。所以你可能要寫為p=(int *)a;就可以了。 或者你也可以寫為p=a[0]; c++中怎麼通過指向二維陣列的指標給二維陣列賦值 22樓:老馮文庫 一、二維陣列與二級指標 二維陣列 二維陣列本質上是以陣列作為陣列元素的陣列,即「陣列的陣列」。二維陣列的相當於由若干個一維陣列組成的一級陣列。 int a[3][4]; 此時的a是一個二維陣列,a[0]、a[1]、a[2]均表示一個一維陣列,它們三個元素共同組成一個一維陣列a(元素是一維陣列)。也就是說二維陣列a是由若干個一維陣列元素(a[0]、a[1]、a[2])組成的一維陣列。 int a[3][4]=,,} 設陣列a的首地址為1000,各下標變數的首地址及其值如圖所示。 無論是一維陣列還是二維陣列,陣列名均表示陣列的首地址。 2. 二級指標 指向指標的指標稱為二級指標,即二級指標不是指向一個普通變數,而是指向一個指標。如int **p,*p並不表示一個變數的值,而是另一個指標。 二、二級指標指向二維陣列 int a[3][4]; 此時的a即是一個二級指標,*a指向二維陣列的首地址(也是a[0]的首地址),*(a+1)指向a[1]的首地址,*(a+2)指向a[2]的首地址。*(*(a+0) + 1)表示元素a[0][1],*(*(a+i)+j)表示元素a[i][j]。 三、應用舉例 #include void main() , , }; for(int i=0; i<3; i++) printf("\n");}} 四、執行測試 0 1 2 3 4 5 6 7 8 9 10 11 就是指向每一行的指標,比如說二維陣列a 2 3 a 0 代表的是二維陣列第零行的首地址相當於 a 0 0 a 1 代表的是二維陣列第一行的首地址相當於 a 1 0 a 0 1代表的是二維陣列第零行,第一列的地址相當於 a 0 1 行指標其實就是二級指標,也就是說它指向一個一維陣列,int a 2 3... public double culcofv int ysize,int nsize 用new申請空間 再在對每個數進行初始化 動態定義和初始化二維陣列 部分 cout 輸入二維陣列的行,列 cin row col int p2 p2 new int row for i 0 i row i p2 i ... 從0起算,c 1 1 是第1行的第1個元素的值。即若有陣列c 3 3 則 c 1 1 5,也就是c 1 1 的值。你應該是沒把指標定義二維數 組的那一小節沒弄清楚 a i p i 一個二維陣列可以看成是以一維陣列為元素構造成的一維陣列,二維陣列可以看成一維陣列,只不過該一維陣列的每個元素又是一個一維...c語言中二維陣列行指標是什麼,C語言中二維陣列行指標是什麼
怎麼定義二維動態陣列,怎麼定義一個二維動態陣列
c語言中c11的意思c是二維陣列