intp 和int p的區別,int p 4 和 int p 4 的區別?

2021-03-10 18:13:12 字數 6281 閱讀 9241

1樓:仁昌居士

int (*p)[4] 和 int *p[4]的區別bai為:性質

du不同

、長度不zhi同、指向不dao同。

一、性質不同

1、int (*p)[4]:int (*p)[4]是個指標,指回向有四個int型別數答據的陣列。

2、int *p[4]:int *p[4]是個陣列,每個元素都是乙個int *指標。

二、長度不同

1、int (*p)[4]:int (*p)[4]的長度為1,為乙個陣列。

2、int *p[4]:int *p[4]的長度為4,有四個元素空間。

三、指向不同

1、int (*p)[4]:int (*p)[4]的指標指向明確,為陣列的邏輯位址位置。

2、int *p[4]:int *p[4]每個指標指向**需要程式中後續再定義。

2樓:匿名使用者

int (*p)[4] 陣列指標是指標,指標指向一陣列。

int *p[4] 指標陣列是陣列,陣列裡面放指標。

3樓:自我催眠

第乙個是定義乙個指標p指向含有四個元素的陣列;第二個是定義乙個陣列,每個元素都是指標

4樓:匿名使用者

int (*p)[4]為指向陣列的指標,即p為指向包含4個元素的一維陣列的指標變數;

int *p[4] 為指標陣列,定義指標陣列p,它由4個指向整型資料的指標元素組成;

5樓:迷茫de求知者

前面的陣列的元素是指標;

後面的是乙個長度為4的指標陣列,就同int型的陣列一樣了

c語言中 int*p[4] 和 int(*p)[4]的區別

6樓:天雲一號

int *p[4]; //定義乙個指標陣列,該陣列中每個元素是乙個指

針,每個指標指向**就需要程式中後續再定義了。

int (*p)[4]; //定義乙個陣列指標,該指標指向含4個元素的一維陣列(陣列中每個元素是int型)。

區分int *p[n]; 和int (*p)[n]; 就要看運算子的優先順序了。

int *p[n]; 中,運算子[ ]優先順序高,先與p結合成為乙個陣列,再由int*說明這是乙個整型指標陣列。

int (*p)[n]; 中( )優先順序高,首先說明p是乙個指標,指向乙個整型的一維陣列。

7樓:匿名使用者

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])

是等價的。

8樓:

int* p[4] // 4個元素的

陣列,元素為int型別的指標

int (*p)[4] // p是乙個指標,它指向 4個int型元素的陣列

int (&p)[4] // p是引用, 它引用 4個int型元素的陣列.

9樓:匿名使用者

int *p[4] 是乙個存int* 的一維陣列

int (*p)[4] 是乙個int 陣列 *p指向a[0]

「int **p」和「int *p」有什麼區別?

10樓:怕不他啊不了

int *p表示的是一級指標,表示p所指向的位址裡面存放的是乙個int型別的值。

int **p表示的是二級指標,表示p所指向的位址裡面存放的是乙個指向int型別的指標。

一級指標存放變數的位址,指向的值是變數的內容。如int* p=, p=陣列的首位址,*p=陣列的第乙個值;

二級指標存放一級指標的位址,指向一級指標。如int*p =, int**pp=&p,pp=指標p的首位址,*pp=陣列的首位址,**pp=陣列第乙個值1。

指標陣列的陣列名傳遞引數對應為指標的指標即二級指標,二維陣列的陣列名傳遞引數對應為陣列指標即指向一維陣列的指標

一級指標通過形參,可以修改實參中指標所指向的位址中的值。修改不了實參中指標所指向的位址。需要借助二級指標才可以。

11樓:尉詩桃牟畫

int*p

:一級指標,表示p所指向的位址裡面存放的是乙個int型別的值int**p

:二級指標,表示p所指向的位址裡面存放的是乙個指向int型別的指標(即p指向的位址裡面存放的是乙個指向int的一級指標)

例如:int

i=10;

//定義了乙個整型變數

int*p=&i;

//定義了乙個指標指向這個變數

int**p1=&p;

//定義了乙個二級指標指向p指標

那麼取出10的值方式為:

printf("i=[%d]\n",*p);

printf("i=[%d]\n",**p1);

請問 int *(p[4]) 和 int(*p)[4]的區別並舉例

12樓:手機使用者

)[4]、**p的區別bai

(由於裡面du牽扯一些東西比較深,zhi我簡單的dao講講吧)

*p[4]是指標陣列內,容

他是陣列。陣列裡面放的是指標,簡單的說定義了4個指標,分別是*p[0] *p[1] *p[2] *p[3],相當於將這四個指標打包到這個陣列中

(*p)[4]是陣列指標,他是指標並且是乙個指向二維陣列的指標。因為以行為單位,又稱行指標。

通俗點講,後面的[4]說明他的每行有4個元素,[0]代表第一列的下標,[1]代表第二列的下標,一次類推。(*p)的意思是指標p指向第一行,*(p+1)即指向第二行,同理一次類推。那麼*(p+2)[3]的意思即是指二維陣列第二行第四列的元素

**p是二級指標,即指向指標的指標,他也是乙個指標,主要區別在於應用的範圍不同,行指標作用物件僅僅是二維陣列,二級指標的應用範圍就廣了,比較典型的就是他可以用指標引數傳遞記憶體,指標陣列和陣列指標可沒有這樣的用法。也可以用他動態申請記憶體,儲存二維陣列元素等等

樓主耐心學習吧,只要堅持下去,這些東西都會慢慢理解的

13樓:匿名使用者

有必要正本清源:

int *(p[4]) 就是陣列 加個()而已 等同於 int * p[4]

int(*p)[4] 就是指標

簡單明瞭

14樓:童川

int *(p[4])是指標陣列,陣列內存放的是四個指標

int (*p)[4]是陣列指標,陣列內存放的整形,而p指向該陣列。

15樓:匿名使用者

int *(p[4]) p[0-4]的值的類

抄型都是 int* 這個就是 int* a[4] 把int*當作型別來看

int(*p)[4] p用來指向a[n][4]的陣列 這樣賦值: p = a 或者p= &a[i]

int(*p)[4] int*p[4]

16樓:匿名使用者

樓主你好。首先學習指標是有好多概念容易混淆。下面我來幫你區別一下:

1、int(*p)[4];------ptr為指向含4個元素的一維整形陣列的指標變數(是指標)

2、int *p[4];-------定義指標陣列p,它由4個指向整型資料的指標元素組成(是陣列)

3、int(*)[4];--------實際上可以看作是一種資料型別。也就是第乙個(int(*p)[4];)中定義的p的資料型別

其實你要看這種到底是什麼,就是要看他最先和誰結合。 比如1中p先與*結合,那就說明p本質是乙個指標;而2中p先與後面的[4]結合,說明他本質是乙個陣列。再慢慢理解。

希望能幫到你。如有疑問可以再問我。

17樓:竹竹風子

當然不是,int(*p)[4]表示p是乙個指標變數,它指向包含4個整型元素的一維陣列

而int *p[4],由於方括號運算級別高,因此p先與[4]結合,此時p[4]定義成陣列形式,再與前面的 * 結合,這樣一來就是乙個存放指標的陣列了。

18樓:冷漠鑑客

int(*p)[4] 是乙個指向4個整形數陣列的指標

int*p[4]是乙個有4個指標的陣列,該指標是乙個指向乙個整型數的。

這個在c語言裡是難點,初學時很容易混淆,不過你先找變數,然後先往右看,如果遇到圓括號(一般是圓括號,而且是右半邊,如果是左半邊就說明它是乙個函式)就往左,比如第乙個p先往右,然後遇到括號,所以往左看到*,證明他是乙個指標,是乙個指向整形數陣列的指標。第二個,p向右,是乙個陣列,是乙個有4個指標的陣列。

19樓:匿名使用者

int(*p)[4];------p為指標變數指向含4個元素的一維整形陣列(p是乙個指標)

int *p[4];-------定義指標陣列p,該陣列中有4個整形指標變數,(p是指標陣列,其中有4個指標)

c語言int (*p)[4]和int *p[4]區別 10

20樓:匿名使用者

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

21樓:一樹的果

第乙個是指標陣列,第二個是陣列指標。區別是他是乙個指標還是多個指標。

陣列指標只是乙個指標變數,似乎是c語言裡專門用來指向二維陣列的,它占有記憶體中乙個指標的儲存空間。指標陣列是多個指標變數,以陣列形式存在記憶體當中,占有多個指標的儲存空間。

int (*p)[4]就相當於int p[4],它就是乙個二維陣列的指標,可以指向乙個第二維度為4的二維陣列

int (*p)[4]和int * p[4]到底是神馬意思啊

22樓:

int *p[4]中定義的p是有4整型指標的陣列

int(*q)[4] q是指向具有4個整型元素的陣列的指標!

用法int f[10];

int x[4],y[4],z[4],w[4];

int a,b,c,d;

int *p[4] =;

和int *p[4] =;

p[0]= x;p[1]=y;p[2]=z;p[3]=w;

//*(p[0]+1) == x[1]

p[0]+1 == x+1;

都是可以的;

初始化:

int(*q)[4] =;//不可以int(*)[4]與int* [4]不相容;

int(*q)[4] =; ;//不可以int(*)[4]只是乙個指標;

int(*q)[4] =x ; //不可以 q 是int(*)[4]; x是int* 不相容;

int(*q)[4] =&x ; //q,&x 都是 可以int(*)[4] ;

int(*q)[4] =&f ; // 不可以q 是 int(*)[4],&f是int(*)[10];不相容

賦值:q =x ; //q 不可以 q 是int(*)[4]; x是int* 不相容;

q =;//不可以int(*)[4]與int* [4]不相容,不可以這樣賦值;

q =; ;//不可以int(*)[4]只是乙個指標,是個4個整型元素陣列的指標;

//{} 內是int *[4] 是個int *指標的陣列

q =&x ; //可以q,&x 都是 int(*)[4] ;

q =&f ; // 不可以q 是 int(*)[4],&f是int(*)[10];不相容

*q 是個四個元素的陣列

(*q)+1 陣列第乙個元素的位址

(*q)[1] 陣列第乙個元素

c語言中的intp5int5怎麼理解

int p5 int 5 p5是個指標,指向乙個具有乙個int 型形參的函式,這個函式返回乙個指向具有5個int元素的陣列的指標。c語言中int p 5 與 int p 5 的區別 你是不想問 int p 和int p 的區別啊 的優先順序高於 所以前者表示指標陣列,而後者是陣列指標,例如int p...

C語言如果我定義了指標int p和變數int p,他倆之間有什麼關係嗎

int p int a 1 p a p定義成了bai乙個整du型指zhi針,而a定義成了乙個初始值為1的整型變數。dao指標是用來儲存內對應容型別的變數的位址的,所以p a 的意思是用指標p來儲存變數a的位址。而如果同時定義int p int p 會發生編譯時錯誤,因為p重複定義了。同乙個作用域 內...

int 和int的區別, int 4 和 int 4 的區別?

int p 4 定義一bai個指du針陣列 zhi,該陣列中每個元素是乙個指標,每dao個指標指向 就內需要程式容中後續再定義了。int p 4 定義乙個陣列指標,該指標指向含4個元素的一維陣列 陣列中每個元素是int型 區分int p n 和int p n 就要看運算子的優先順序了。int p n...