1樓:油菜花零
前者是二級地址,就是地址的地址。後者是一級地址,雖然指向的也是一個地址,但是定義的時候申明的是一級地址。
2樓:我是鄧大爺
二級地址是指標的指標,也就是這個指標存放的是一個指標,而不是地址。也就是int **
一級指標只是個指標 int *,這個指標存放的是一個地址
3樓:朔風荷葉
int (*p)[4]是一個陣列指標,陣列的每一個元素都是一個指標,都指向的是地址。後一個只是一個普通的指標
c語言中,關於指標int(*p)[4]和int*p指向二維陣列a[3][4]初始化的問題。
4樓:匿名使用者
二維陣列相當於多行列數相同的一位陣列組合起來;int (*p)[n]定義一個行指標p,其中:
p自增1,p指向下一「行」一維陣列的首地址因為p是一個二級指標。
所以索引其指向的資料內容需要取二次內容,格式及解釋如下:
格式:*(*(p+行)+列)
解釋:其實很好理解,因為p作為二級指標,p++代表的僅僅是行號+1所以格式中*(p+行)就取到了所在行首地址指標(因為p是二級指標,取一次內容之後,取到的內容還是指標)現在把*(p+行)整體看作一個一維陣列指標再進行一位陣列的指標內容索引*(*(p+行)+列)就能索引到內容,當然也能進行初始化了!
例子:#include
void main()
/*用行指標的初始化與輸出*/
p=a;
printf("input:\n");
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf("%d",*(p+i)+j);
printf("二維陣列\n:");
for(i=0;i<3;i++)}結果
5樓:匿名使用者
int (*p)[4];
陣列指標,每個元素都是指標, 每個元素可以指向一個一維陣列int * p
指標, 指向一維陣列
6樓:匿名使用者
還是我來告訴你吧!前者是二級地址,就是地址的地址。後者是一級地址,雖然指向的也是一個地址,但是定義的時候申明的是一級地址。
7樓:匿名使用者
int (*p)[4];p=a;int *p;p=a[i];//(i=0,1,2)
c語言中,關於指標int(*p)[4]和int*p指向二維陣列a[3][4]初始化的問題。
8樓:騎蘭皮乙
int(*p)[4];
陣列指標,每個元素都是指標,
每個元素可以指向一個一維陣列
int*
p指標, 指向一維陣列
c語言中 int*p[4] 和 int(*p)[4]的區別
9樓:天雲一號
int *p[4]; //定義一個指標陣列,該陣列中每個元素是一個指
針,每個指標指向**就需要程式中後續再定義了。
int (*p)[4]; //定義一個陣列指標,該指標指向含4個元素的一維陣列(陣列中每個元素是int型)。
區分int *p[n]; 和int (*p)[n]; 就要看運算子的優先順序了。
int *p[n]; 中,運算子[ ]優先順序高,先與p結合成為一個陣列,再由int*說明這是一個整型指標陣列。
int (*p)[n]; 中( )優先順序高,首先說明p是一個指標,指向一個整型的一維陣列。
10樓:匿名使用者
int*p[4]是指標的陣列,也就是說它是一個陣列,陣列裡存的是一個個的指標
int(*p)[4]是陣列的指標,也就是說它是一個指標,指向的是一個陣列。指標指向的型別會影響到指標加減運算時地址的位移。比如說有一個陣列 int a[4],加上取址運算子 &a,這個表示式的型別就是指向陣列的指標,可以這樣賦值 p = &a;。
一般用於向函式傳遞二維陣列的時候使用這種型別,這時還有一種更直觀的寫法
void matrix_sum(int matrix_a[4], int matrix_b[4])
這種寫法和
void matrix_sum(int (*matrix_a)[4], int (*matrix_b)[4])
是等價的。
11樓:
int* p[4] // 4個元素的
陣列,元素為int型別的指標
int (*p)[4] // p是一個指標,它指向 4個int型元素的陣列
int (&p)[4] // p是引用, 它引用 4個int型元素的陣列.
12樓:匿名使用者
int *p[4] 是一個存int* 的一維陣列
int (*p)[4] 是一個int 陣列 *p指向a[0]
c語言二維陣列指標問題, 問題1:int (*p)[4]與int *p[4]有什麼不同
13樓:匿名使用者
1,前者,p是一個指標,後者p是一個陣列,差別太大,以至於沒有什麼相同的地方(⊙_⊙)
2,沒太理解問題,請用一小段**說明。
c語言int (*p)[4]和int *p[4]區別 10
14樓:匿名使用者
int *p[4], 是一個長度為4的指標陣列,陣列的元素為int*;
sizeof(p) => 4*4 = 16;(32位系統一個指標4位元組)
用法:*(p[0])
int (*p)[4] 是一個指向長度為4陣列的指標,即int(*)[4];
其本質是一個指標,如在32為系統上,sizeof(p) => 4用法:(*p)[0].
15樓:一樹的果
第一個是指標陣列,第二個是陣列指標。區別是他是一個指標還是多個指標。
陣列指標只是一個指標變數,似乎是c語言裡專門用來指向二維陣列的,它佔有記憶體中一個指標的儲存空間。指標陣列是多個指標變數,以陣列形式存在記憶體當中,佔有多個指標的儲存空間。
int (*p)[4]就相當於int p[4],它就是一個二維陣列的指標,可以指向一個第二維度為4的二維陣列
編c語言時二維陣列指標形式要寫成int(*p)【4】,為什麼不能寫成int*p【4】?
16樓:匿名使用者
這裡的()有點類似於來
優先順序源
int (*p)[4]建立的是 指向int[4]型別的指標int *p[4]建立的是一個4元陣列,陣列的元素都是指向int型的指標
()優先順序的作用是不是也可以看成函式?
你可以把()當成一個返回值和輸入值相等的函式 沒問題的,雖然一般沒有人這麼說
17樓:17哥
首先來整形二維陣列的最容易懂的自寫法為:int p[2][4]; 變通一下就是bai,p是一個指du針,該指標指向一zhi個包含4個整形元素的數dao組。
那麼我們分別來看一下兩種變形有什麼不同。
首先要說的一點是運算子的優先順序,運算子的優先順序比*運算子的優先順序要高。因此要想把int p[2][4]轉變成指標,就需要用()提升*的優先順序:int (*p)[4]。
這表示p是一個指標,指向的元素是一個包含4個整形元素的陣列。因此是一個n*4的二維陣列。
int *p[4]表示的是p是一個陣列,陣列中存放的是一個整形的指標。4*1的一維陣列。
18樓:匿名使用者
這兩bai個意義不同
int(*p)【4】表示p是個du
指標,指向
zhi一個儲存四個int資料dao的空間,這就是專所謂的陣列屬指標,這裡的括號只是優先順序作用,沒有函式的意思int *p【4】 表示p是個陣列,它有四個元素,元素型別是int *指標,此之謂指標陣列
19樓:防禦
對!是優先順序的問題,int(*p)[4],是int型陣列;
而int *p[4],是指標陣列!!!
不加括號型別都變了,這就是優先順序
20樓:莫遷然
int*p[n]含義是定義指標陣列p,它由n個指向整型資料的指標元素組成;
int(*p)[n]是指向含n個元素的一維陣列的指標變數;
在譚浩強c語言書的第276頁上有詳細介紹
c語言中,關於指標intp和intp指向二維數
int p 4 陣列指標,每個元素都是指標,每個元素可以指向一個一維陣列 int p指標,指向一維陣列 c語言中,關於指標int p 4 和int p指向二維陣列a 3 4 初始化的問題。二維陣列相當於多行列數相同的一位陣列組合起來 int p n 定義一個行指標p,其中 p自增1,p指向下一 行 ...
c語言中關於指標intp4和intp指向二維陣列
二維陣列相當於多行列數相同的一位陣列組合起來 int p n 定義一個行指標p,其中 p自增1,p指向下一 行 一維陣列的首地址因為p是一個二級指標。所以索引其指向的資料內容需要取二次內容,格式及解釋如下 格式 p 行 列 解釋 其實很好理解,因為p作為二級指標,p 代表的僅僅是行號 1所以格式中 ...
C語言中,指標變數該如何使用呢,C語言中指標和指標變數的區別是什麼
int integer 0 為求來 地址運算子,指標用來儲存 源一些變數的bai地址 可以這樣訪du問 pinteger 得到 pinteger這個整形指標裡面的值 zhi0 建議看dao 相關的書,難懂的東西才有意義 所謂指標其實就是用來儲存地址的 就這樣想就好了 比如 int a,p p a 就...