c語言中,關於指標intp和intp指向二

2021-03-03 20:30:22 字數 4204 閱讀 8015

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 就...