intp和intp的區別,舉例說明一下

2021-03-05 09:16:11 字數 5725 閱讀 5280

1樓:匿名使用者

這兩個其實是數字指標和指標陣列的區別。我們一個一個來說明:

(1)int*p[3];//定義了一個三維陣列,其中的每個元素p[0]、p[1]、p[2]都是指向int變數的指標。

(2)int(*p)[3];//定義了一個指標,這個指標是指向一個三維陣列的。

兩者之間的區別和聯絡可以用一個二維陣列來闡述:

int *p[3];//定義p[3]為指標陣列;int (*q)[3];//定義q為陣列指標;int a[4][3];//定義一個二維陣列

p[0]=&a[0][0];//可以取a[4][3]中任意元素的地址給p[3]中的元素賦值。q=a[1];//a[1]其實是一個三維陣列,其元素包括a[1][0],a[1][1],a[1][2],所以 //a[1]就表示這個陣列的首地址,這個地址可以用來給q賦值。

擴充套件資料:

舉例說明如下:

(1)陣列指標:

int a[3][4]=;int (*p)[4];p=(int(*)[4])a;for(int i=0;i<3;i++)printf("\n");}

(2)指標陣列:

int ix=0;int i=0,j=0;int a[3][4]=;

int *p[3];for(ix;ix<3;ix++)p[ix]=a[ix];for(i;i<3;i++)printf("\n");}

2樓:薰衣草的旋律

int *p[3] p是一個陣列,此陣列有3個元素,每個元素都是int*型別,也就是指向整型資料的指標型別。

int a=10,b=20,c=30;

int*p[3]=;

而int(*p)[3]中的p是一個指向陣列的指標,此陣列有3個int型別的元素。例如:

int a[3]=; 那麼p就是指向這個陣列a的指標。

int(*p)[3]=&a; // 這裡賦值一定要用取地址符號。也就是取陣列a的地址。

不可以這樣賦值: int(*p)[3]=a; // error :型別不相容。a本來是陣列型別,是不可以賦值給int(*)[3]這個型別的。

但是這樣是可以的int *p1=a; // ok 因為a可以隱式轉換為int*型別,其值實際上就是陣列第一個元素的地址,也就是&a[0]

3樓:匿名使用者

*p[3] 這個是一個

指標陣列 它所代表的意思是每一個元素都相當於一個指標變數而(*p)[3] p是一個指標變數,表示指向含有3個整型元素的一維陣列

前者可以類似於二維陣列 把它看成是由3個一維陣列組成的 經常與字串搭配使用 比較方便操作 把多個字串放在一個指標陣列中

後者是用來引用二維陣列的 像a[2][3]這個二維陣列 我們既可用指標來引用 又可用(*p)[3]來引用 一般使用(*p)[3]

4樓:林聲飄揚

#include

int main()

;int *p[3] ;//表示存貯是3個整型變數地址;

int (*q)[3]; //表示指向3個整型陣列元素的一維陣列指標//把第一行三個元素地址存放在p指標陣列中for( i=0;i<3;++i)

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

//輸出指標陣列中地址所對應值

for( j=0;j<3;++j)

cout<< *p[j]<<" ";

cout<

q=a;//把陣列a開始地址賦給指向一維陣列q;

for(i=0;i<2;i++)

for(j=0;j<3;j++)

cout<< *(*(q+i)+j)<<" "; //輸出陣列中元素return 0;}

int *p[3] 與 int (*p)[3]的區別?

5樓:匿名使用者

int *p[3] 是一個陣列,有3個成員,其成員是指向整型的指標。

int (*p)[3]是一個指標,它指向一個有3個整型的陣列。

可以用sizeof來測試兩個的大小。

6樓:匿名使用者

int *p[3]應該是指標陣列,是長度為3,型別為整型的陣列,陣列中的元素是指標;而int (*p)[3]這是陣列指標,表明了p是一個指標,它指向長度為3的整型陣列的首地址,大概就這個意思吧

7樓:匿名使用者

前一個是一維指標的陣列,就是陣列裡邊的每個元素都是一個指標

後一個是一個指標,他指向的是一個包含三個元素的陣列。

具體看參考資料

8樓:匿名使用者

其實,自己用編譯器跟蹤一下就很清楚了

9樓:匿名使用者

const int *p和int * const p的區別

10樓:育知同創教育

const int *p和int * const p的區別如下:

const int *p表明指向的物件是const型,不可以修改,但是指標p的指向可以修改。

* const p表明指標變數p是const型,它的指向不可修改,但是指向的物件可以修改。

一般來說用*限定的是指標區域存放的內容,不用*的是記憶體地址。

11樓:刀無極啊

你可以看看這篇文章,講的很仔細

int *p[3]和int(*p)[3]的區別

12樓:匿名使用者

int *p[3]這個叫指標

陣列,本質上是一個陣列,陣列元素型別是指向int型的指標

int (*p)[3]這個叫陣列指標,本質上是一個指標,指標指向的是一個有3個int型元素的一維陣列

對於這種問題最簡單的方法是結合運算子優先順序/結合性,先確定定義的本質是什麼,然後再由內向外一層層理解

例如

int *p[3] ,有運算子優先順序/結合性可知,等效於int *(p[3]),那麼首先可以確定,p的本質是一個有3個元素的陣列,那麼陣列元素的型別是什麼呢,往外看可知,為指標型別,那麼指標指向的型別又是什麼呢,再往外看,可知為int,所以最後整理下就可以知道p是一個有三個元素的陣列,該陣列元素型別為指向int的指標

int (*p)[3]同理

13樓:倒黴熊

int *p[3] p是一個陣列,此陣列有3個元素,每個元素都是int*型別,也就是指向整型資料的指標型別。

int a=10,b=20,c=30;

int*p[3]=;

而int(*p)[3]中的p是一個指向陣列的指標,也就是說它指向的不是一個數,而是一個陣列, p是指標,指向[3]個大小的陣列···如 int a[2][3]; int (*p)[3]; p=a;

14樓:tea醬醬

int *p[3]是一個陣列 其中有三個元素 元素是指標

int(*p)[3] 是一個指標 該指標指向一個存有3個整形的陣列

c++中int *p[3]和int (*p)[3]有什麼區別

15樓:無聊的

int *p[3]是定義了一個名為p的陣列,裡面有三個型別為int*的元素。

也就是p[0],p[1],p[2]分別儲存了一個int*;

而int (*p)[3]是定義了一個指向有三個元素的int型別陣列的指標,比如說

int a[3];

int (*p)[3]=&a;

那麼(*p)[0]就是a[0]

有關c語言的,請問int *p[3]和int(*p)[3]的區別,請大俠幫忙解釋!

16樓:匿名使用者

前者是指標數

bai組,包含3個元du素,後者是一個陣列型指標。zhi

區別一是:一個是dao3個元素的陣列回,相當於定義了三個變答量;一個是單個變數。

區別二 是:前者變數型別是int*,後者變數型別是int (*)[3],int*指標的步長是一個int,而int (*)[3]指標步長是3個int。

int *p = new int[3];

取p[0]的地址

取p[1]的地址

cout << naddress1 - naddress0 << endl; // 輸出是4,即一個int長度

int pp[3][3];

int (*q)[3] = &pp[0];

int naddress0 = (int)q; // 取q[0]的地址

int naddress1 = (int)(q +1); // 取q[1]的地址

cout << naddress1 - naddress0 << endl; // 輸出是12,即3個int長度

int (*p)[3] 和 int p[3] 有什麼區別呀?

17樓:好紅客

int p[3] 是定義了一個整型陣列 p ,陣列大小為 3

int (*p)[3] 是定義了一個陣列指標 p ,用於指向一個大小為 3 的整型陣列

還有疑惑,可以 hi 我!

18樓:匿名使用者

變數申明的組copy成結構:

型別 變數名

首先這兩bai個變du量申明都是一個長度為3的陣列的:zhi[3] 相同點刨除不看dao,下面看不同點:

前者的型別為 int (*) 變數名為p

後者的型別為 int 變數名為p

很明顯,差異在於:前者申明的是一個int型的指標,而後者申明的是int型整數

19樓:匿名使用者

我覺bai

得不肯能出現這種情況首

du先有括號所以先執行zhi*p,表明p是個指dao針變數,而int p[3]p是個專陣列名,陣列名是屬個地址常量,所以這兩個不肯能出現在一起的,這就好比兩個不同程式裡只因為識別符號相同就相互比較,比較起來有什麼意義嗎?

20樓:匿名使用者

int a[3]

int (*p)[3]

那麼可以 p=a來操作a

a是陣列,p是陣列指標

定義指標 int *p[3]和int (*p)[3]有區別嗎?如果有,是什麼區別?

21樓:匿名使用者

int *p[3]

p是包含3個整型

bai指標的陣列du

p is an array of 3 elements, each element of which is pointer to a int.

int (*p)[3]

p是指向整型含3個元素zhi陣列的指標

p is a pointer to int array of 3 elements。

我回dao答這麼回精確別忘了多給點分啊,

答先謝謝了!

在c中,intp和intp有什麼區別

int p為引來用,而int p為定義變數。二者源區別如下 1 引用在bai定義的時候必須 du賦值,否則編zhi譯會出錯。正確的形式為daoint p a 其中a為int型變數。2 引用在定義時不會分配空間,只是初始化變數的一個別名。如int p a 的形式,後續對p的操作,與對a操作完全等價。我...

c語言中intp4和intp

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

對於以下變數,正確賦值的是 int p 3A p a B p a C p a D p

bp為a 0 地址。c 定義為int p 3 a 3 可知這裡p是一個指標陣列,p為陣列名,所以不能作為賦值號的左運算元,所以ab不對 p即p 0 所以c等效於p 0 a,如上所說,陣列p的元素是指標,所以d是不合適的 變數定義為 int p 3 a 3 c 是正確的賦值。81.a p a p是一個...