1樓:痛不過錯愛
a是二維陣列的首地址,而a[0]同樣是二維陣列中第一行的首地址,是等價的。*(a+1)是第二行首個元素,a[1]是其地址,不等價。a[1]與a+1等價
2樓:月
單獨一個a就是指a[0]=a,*(a+1)=a[1],a+1=a[0]+1
定義了二維陣列a[3][4],那麼a+1,*(a+1),*a[1],*(a[0]+1)各代表什麼意思
3樓:匿名使用者
因為a是t[4]型別,所
以a[1]得到的是int型的值,對其取下標是非法的內。所以a[1][0]是一個非法的表示式。
咳咳以容下都是廢話。。怎麼跑題了。。。既然打出來就懶得刪了至於&a[1][0],編譯器解釋為&((a[1])[0]),同樣非法。
4樓:聽不清啊
定義了二維陣列a[3][4],那麼
a+1=*(a+1)=*a[1],表示a[1]的地址,即&a[[1]。
*(a[0]+1)表示a[0][1]
二維陣列a[3][3]中p=a,當++p後為什麼指向的是a[0][1]而不是a[1][0]呢,*p+1與*(p+1)的區別在哪
5樓:匿名使用者
a是一個二級源指標
指向一個指標陣列,為a[0],a[1],a[2]a[0],a[1],a[2]又分別是指標,指向他們的兒子......所以p=a;++p;
p本來指向a[0]後增一,指向a[1]
a[1]就是a[1][0];
6樓:匿名使用者
(*(p+i)+j) p+i求行下標自j是列bai下標*(dup[i]+j) p[i]是行下標,j是列下標;
*(*(p+i)+j) *(p+i)取行下標,再加j 取列zhi下標元dao素;
p+1 指向a[0][1]
p+3 指向a[1][0]
行優先,先走完第一行,後走第二行。
p+1是a[0][1]
p+3是 a[1][0]這是指標
然後 a的話就是指向第一行 a+1是指向第二行 a+2是指向第三行意思是說
p+1=a[0][1]
p+3=a[1][0]
然後賦值的話 p=a 相當於a[0][0]p=a+1 相當於 a[1][0]
p=a+2相當於 a[2][0]
7樓:無風無雲的海角
沒有啊!
++p後是
襲指向a[1][0];
*p+1是行指標變列指標後,列指標+1;
*(p+1)是行指標+1後變為列指標;
#include
int main()
;int (*p)[3];
p=a;
++p;
printf("%d\n",*(*p));
return 0;}
c語言二維陣列與指標,我想知道為什麼*(a+1).與顯示中的a+1,所給出的地址是一樣的,怎麼理解?
8樓:
a=&a[0];陣列名相當於指標,等於陣列首地址, 型別為 int(*)[3];
*a= a[0];陣列int a[2][3];二維陣列 a有兩個子陣列,a[0],a[1] ;
有2*3 =6個int型元素 a[0][0],a[0][1],a[0][2];a[1][0],a[1][1],a[0][2];
就是說定義一個陣列int a[2][3];同時定義了 1+2+6
共九個識別符號,6個整型變數,兩個三個整型元素的一維陣列a[0],a[1] 定義為
;一個二維陣列 a;一共定義了9個名字。
*(a+1)=*(&a[1])=a[1];
a+1=&a[0]+1 =&a[1];
由於並無單獨的儲存空間儲存 a[1] 這個指標(a[1][0]的地址),所以a[1]和&a[1] 除了型別不同外,實際內容是相同的,
&a[1]的型別為 int(*)[3];
a[1]的型別為 int [3]; 也就是int* ;
實際上a,a[0],&a[0][0] 甚至&a的值都是相同的,但是型別不同
a,&a[0];: int [2][3] ==>int (*)[3]; (const ??? int (const ????*)[3])
a[0]; :int [3]==>int *; (const??? )int *;
a[0][0]; : int;
9樓:匿名使用者
a是雙下標變數,相當於定義是int **a; a存放著這個二維陣列的首地址,由於是二維陣列,
a+1實際上是地址a+3*sizeof(int),(其中的3對應著定義int a[2][3];)也就是a[1][0]的首地址
所以*(a+1)還是一個指標,與&a[1][0]是一樣的,a+1是指標,運算結果與前者相同。
10樓:匿名使用者
二維陣列是兩層指標,這個你該明白
*(*(a+i)+j)這個是表示i行的第j個資料,注意啊,是兩個*要是不理解,記住套用即可
一個*是指標
所以ij都是指標
a+1是一個指標,表示第1行的首地址(c中陣列時從0開始計數的)在二維陣列中,
a,a[0],&a[0][0]這三個指標雖然都是a的首地址的值,但是在c中用起來是不一樣的
a表示二維陣列的首地址
a[0]表示第0行的首地址
&a[0][0]表示第0行的第0個元素的地址
11樓:未來需努力點綴
樓主你好
你這裡的a是陣列名
陣列名a是陣列a[2][3]的首地址 也就是a[0][0]的地址那麼a+1就是a[0][1]的地址 *(a+1)對應的就是a[0][1]
希望能幫助你哈
12樓:楊復興
×(a+1)是一個指向 指向(a+1)所以它和a+1的地址是一樣的
c語言定義了一個二維陣列a[5][3], 用迴圈實現a[0][0]+a[1][0]+a[2][0]+~~~a[5][0] ?如何實現??
13樓:匿名使用者
可以啊,for(j=0;j<3;j++) for(i=0;i<5;i++) n=n+a[i][j];每一列的就有了,2個for語句的位置換一下就可以在行和列之間轉換了!!!
14樓:匿名使用者
哥們,a[5][0]陣列越界了啊!最多能得到a[4][0]實現a[0][0]+a[1][0]+a[2][0]+~~~a[5][0]
float sum= 0;
for (int i=0; i<5;i++)sum += a[i][0];
cout<的也能實現
for ( j = 0; j< 3; j++)
15樓:匿名使用者
//假設:int a[5][3];
//可以獲得指定的列ncol的累加和
int getarraysum(int a[5][3], unsigned int ncol)
}return nresult;}
c語言中,有一個二位陣列inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};請問a[0],*(a+0)和*(*(a+0))的區別?
16樓:匿名使用者
要明白這事先要弄清二維陣列的儲存問題
先說一維陣列,舉例a[3],陣列名稱a就是指標,就是這個陣列的起始地址。其中各元素的地址就是a, a+1,a+2. 它們的值分別是*a, *(a+1), *(a+2),也就是a[0],a[1],a[2].
二維陣列int a[3][4],陣列名稱a則是指標的指標,它指向指標陣列a[3],其中每一個元素又分別指向一個一維陣列,每個陣列包含了4個整數。
來自c語言基礎訓練...
怎麼定義二維動態陣列,怎麼定義一個二維動態陣列
兩種方案,樓主自選吧。定義一個m n的二維陣列 1st 指標陣列來實現 char arr char malloc m sizeof char for i 0 i m i arr i char malloc n sizeof char 2nd 一個指向一位陣列的指標來實現char arr n char...
二維陣列與指標,二維陣列a的「列指標」與「行指標」有什麼聯絡
int m 可以分步驟來理解 m意思是引用這個整型數,m代表指向這個整型數的指標,m代表指向 m的指標,也就是傳說中指向指標的指標 一般情況下形參為指標型別時,可以傳送陣列名作為實參,也即陣列的起始地址,二維陣列的可以看成是多個一維陣列組成的 用這種二維指標是不能操作這種二維陣列的,二維指標就是指標...
請問,什麼叫一維陣列和二維陣列呢
一維陣列 vector 多維陣列 matrix 現在有很多陣列的運算已經封裝,比如.vector,matrixmatrix何用?相信我們都學過矩陣。矩陣有何用?太多了舉一個例子 圖形影象處理時用到的,平移 旋轉 靠什麼?矩陣。作用太多了 運用陣列可以簡化程式,使程式更加高效,也為以後學習指標型別的陣...