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

2021-03-10 21:57:44 字數 5357 閱讀 4812

1樓:雙魚哎呀呀

int *p[4]; //定義一bai個指du針陣列

zhi,該陣列中每個元素是乙個指標,每dao個指標指向**就內需要程式容中後續再定義了。

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

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

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

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

2樓:匿名使用者

你說的是int (*p)[4] 和 int *p[4]吧

int (*p)[4] ; p是陣列指標 ,即p是指標變數,它的型別是版「四個int 型別」的資料,p++會使p向後移動權「四個int 型別」的空間。很少用的,一般只用在對二維陣列的遍歷時使用。慢慢對c熟悉了再去研究吧。

int a[5][4]; p=a;這樣p指向a【0】,p+1指向a【1】,.。。

int *p[4] ; p是指標陣列,即p是陣列名,它有四個元素,每個元素都是乙個指向int 型別資料的指標

請問下在c語言中int (*p)[4]與int **p到底有什麼區別,我始終不太懂

3樓:鷹弈

樓上的回答是在不敢苟同

*p[4]、(*p)[4]、**p的區別(由於裡面牽扯一些東西比較深,我簡單的講講吧)

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

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

4樓:匿名使用者

int (*p)[4] 這個是

指標陣列。裡面存的是 4個int指標。陣列名字叫p 。這裡主要注意一下下優先順序

()的優先順序相同。結合方向是從左到右。所以先跟() 結合。int *p[4] 如果是這樣就是 陣列指標了。

int **p 是個二維指標。其實很好理解,打個比方。比如你的資料存在位址 2000 號中。

你要從從2003號記憶體裡找2000號記憶體。二維指標就是這樣的。從2003 存的位址找到2002 再從2002存的位址找到2000。

就是多了個彎而已。

5樓:劍聖來自火星

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

int **p 等價於int *p[4]

6樓:匿名使用者

int (*p)[4] 中p是陣列指標,指向乙個int 的二維陣列,第二維長度是4

int **p 中p可以指向任意長度的乙個int二維陣列,第二維長度不一定要是4

int *p[4] 是指標陣列,p是乙個陣列,他的成員是int指標。

c語言中 int *p[4]和int (*p)[4]在定義和使用方面有什麼區別? o(∩_∩)o謝謝

7樓:勞傷痕

*p[4]這指標陣列,定義乙個陣列,裡面存放的是指標。

(*p)[4]定義的是乙個指向一維陣列的指標,這是乙個指標,p++相當於p的位址相加了1*4

舉例說明:

#include

void main()

,};int *p[4],(*q)[2];

q=a;

p[0]=&a[0][0];

p[1]=&a[0][1];

p[2]=&a[1][0];

p[3]=&a[1][1];

for(int i=0;i<4;i++)

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

printf("\n");

for(int j=0;j<2;j++,q++)printf("\n");

}}輸出的結果是:

指標陣列:1,2,8,9指標陣列中的每個元素都要給其賦予位址,否則出錯

陣列指標:1,9陣列指標只要開始賦值頭位址,之後執行q++是相加維數,所以結果是1,9而不是1,2

8樓:

//舉例說明:

int *p1[4];//定義指標陣列。這個陣列有四個元素,每個元素都是指向整形變數的指標。

int (*p2)[4];//定義乙個指標變數,指向一行有四個整形元素的行指標;

int a[4];

int b[5][4];

的元素分別指向一維陣列a的每乙個元素。

p2=b;//p2指向二維陣列b的第一行。

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

9樓:匿名使用者

前者是指標陣列,為4個int指標的陣列,有4個元素

後者是陣列指標,為乙個指標,型別為指向包含4個int型別元素的一維陣列的指標

int (*p)[4] 和 int *p[4]的區別?

10樓:仁昌居士

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]每個指標指向**需要程式中後續再定義。

11樓:匿名使用者

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

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

12樓:自我催眠

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

13樓:匿名使用者

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

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

14樓:迷茫de求知者

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

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

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

15樓:

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] 陣列第乙個元素

16樓:示申僉

int *p[4]定義乙個指

針陣列,這個陣列的每個元素都乙個指向int資料型別的指標。

比如:int a=1,b=2,c=3,d=4;

int *p[4]=;

int (*p)[4]定義乙個指向乙個一維陣列的指標,這個一維陣列資料型別是int,共有四個元素。

比如:int a[4]=;

int (*p)[4];

p=a;

17樓:田雲來啦

不是的,*p[4]表示長度為4的指標陣列(本質是乙個陣列,就當乙個陣列用就行了),而(*p)【4】表示指向長度為4的陣列的乙個指標(本質是乙個一級指標),當然他們的具體更加詳細的區別(指標陣列和陣列指標)可以參考你的學習資料啦,而二級指標的乙個標誌是有兩個**的,在實際應用中一般很少用到二級指標或多級指標,用一級指標指向二維陣列(如(*p)【3】【4】)來進行排序的比較常見,希望可以幫助你,有什麼不懂得可以追問

c 中INT和INT返回有什麼區別具體點啊

c語言系列都是 case sensitive 區分大小寫 的,不知道你到底是問int還是int 一,如果你問的是int int是宣告整形變數的keyword int 是別名,一般用在函式的 list of parameter 中,表示對int型變數的引用,如 returntype method in...

c語言int和longint問題

在c語言中,int即整型型別,long int等同於long,為長整型型別。二者區別與 內編譯器相容關。1 16位編譯器。int佔2位元組,範圍為 32768 32767 long int佔4位元組,範圍為 2147483648 2147483647 2 32位編譯器。int 和long均佔4位元組...

int和integer所佔記憶體大小分別是多少

每個integer 32bit,也就是四個位元組 integer在記憶體中有乙個指向方法區裡邊類資訊的指標,這個指標占用4bytes 另外integer中例項變數只有乙個int型別的字段,所以為32位,4bytes。在不考慮lock wait set gc相關資訊占用的時候,如果是第一種方案,有4b...