intp和intp有什麼區別我想知道intp與intp有什麼不同

2021-03-07 00:31:01 字數 5771 閱讀 3243

1樓:怕不他啊不了

int *p表示的

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

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

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

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

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

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

2樓:匿名使用者

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

3樓:匿名使用者

int (*p)(); //函式指標,這個指標可以指向不同的函式,但是必要條件是引數與返回值都為void型

若定義了乙個這樣的函式: int fun();

則這樣賦值: int (*p)() = fun;

再這樣呼叫: p();

int *p(int x,int y) //指標函式,是個函式引數為兩個int變數,它的返回值是乙個int的指標

若定義了乙個這樣的函式: int *p(int x,int y);

則這樣賦值: int *ptr = p(4, 5);

4樓:匿名使用者

int (*p)()是乙個int型別的無引數的函式指標,它指向的是乙個函式,它是用來存放無形參函式**首位址的變數,也就是說在賦值的時候給p一定要賦乙個函式;而int *p(int x,int y)是乙個返回值為int型的簡單的帶有兩個形參的指標函式,和普通函式不同的是它是乙個指標函式。簡單說前者是乙個變數,而後者是乙個函式!

5樓:hello你個

int *p是一級指標,表示p指向的記憶體中存放的是乙個真型變數,int **p是二級指標,表示p指向的記憶體種存放的是乙個整形的指標變數

6樓:匿名使用者

本質上沒有區別,但字面理解容易模糊。比如

int *p,i;// 很明顯,p是指標,i是變數int* p,i; // *緊挨著int,那麼*屬於p還是屬於p和i呢?(當然不是),還是屬於p,但看上去不是那麼清晰。

所以推薦的是int *p,i;,而不是int* p,i;。

7樓:匿名使用者

胡說,誰說的int *p(int x,int y)是乙個返回值為int型的簡單的帶有兩個形參的指標函式?這分明是以個返回型別為整型指標(int*)的乙個帶有兩個整型引數的普通函式。您這麼理解int* p(int x,int y)就好理解了。

8樓:匿名使用者

int (*p)() 是定義乙個儲存某類函式(int fun())入口位址的指標.

int *p(int x,int y) 是宣告乙個返回整型指標的函式(p).

9樓:匿名使用者

int (*p)(int)是函式指標,如:

int func(int x); /* 宣告乙個函式 */int (*f) (int x); /* 宣告乙個函式指標 */f=func; /* 將func函式的首位址賦給指標f */int* p(int x);是乙個返回值為int型指標的函式的宣告

10樓:匿名使用者

int **p指向的是乙個指向int型的指標陣列

int *p指向的是乙個int型資料望採納

我想知道int *p與int* p有什麼不同

11樓:大野瘦子

一、意思不同

int *p和int* p後者比前者更好理解為指標。int *p;可能會被理解為乙個變數,名為*p,int* p;很直觀的被理解為乙個指標,名為p。

二、強調型別不同

*p是乙個int』這裡*和p綁在了一起——這就是c的風格,這種風格強調的是語法。而乙個典型的c++程式設計師會寫「int*p」,並告訴你「p是乙個指向int的指標,p的型別是int*」。這種風格強調的是型別。

三、用法不同

int* p, p1; // probable error: p1 is not an int*

這裡,把*放得離p近一點也同樣不能澄清問題:

int *p, p1; // probable error

為了保險起見,只好一次宣告乙個變數了——特別是當宣告伴隨著初始化之時。

int* p, p1; // probable error: p1 is not an int*

而int* p = &i;

int p1 = p; // error: int initialized by int*

它會報錯。

12樓:匿名使用者

c++作者對這個有過解釋,鏈結為

對應內容翻譯如下(來自

q: 「int* p;」和「int *p;」,到底哪個正確?

13樓:青鳥中關村專家

從語法上講,沒有區別。

從命名規範上講,int *p和int* p後者比前者更好理解為指標。

int *p;可能會被理解為乙個變數,名為*pint* p;很直觀的被理解為乙個指標,名為p建議平時採用後者書寫。

14樓:藍之墮落哀傷

這個真沒不同,是一樣的,編譯出來都是指標型別的變數,不過良好的書寫習慣是前面那種方式,不容易誤解看錯。

15樓:匿名使用者

頂多就是寫法的區別,其實沒有區別,都是定義int型的指標p,編譯器編譯出來都一樣的,所以這兩個沒有區別。

16樓:匿名使用者

int *p p是指標,指向int變數。

int* p p是變數,它儲存乙個指向int的指標的值

17樓:淡騰搖銘

一樣的,但是最好標記符緊挨定義變數

18樓:我了個去_去啊

一樣的啊 習慣而已

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

19樓:怕不他啊不了

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

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

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

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

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

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

20樓:尉詩桃牟畫

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

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

21樓:育知同創教育

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

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

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

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

22樓:刀無極啊

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

int *p=a和int *p=&a有什麼區別?

23樓:匿名使用者

int *p=&a 其實是兩個語句 等價於 int *p; p=&a;

如果a是int型,int *p=a是錯誤的,正確的應該是 int *p; p=&a;

在定義的時候不能給p直接賦值整型,只能賦值int型位址 即 &a;

如果要給p指標指向的位址賦值,就可以*p=a;但不能在定義*p的時候直接賦整型。

24樓:

int a[10];

int *p=a; //與前面定義的陣列名a型別相同,才可以這樣賦值。

int a;

int *p=&a; //前面定義的a是普通變數,才可以這樣賦值。

25樓:捧一公尺陽光

從基本定義來啊,int *p之後p為乙個位址,*代表指向這個位址,int *p=&a等價於int *p,p=&a.這樣p和&a都是位址,可以=。對於int *p=a,如果a為陣列名,則也是個位址,與前面的就同了,如果a只是個一般變數,p是位址,*指向它,*p合起來就是乙個數,如a是int型,就可看成兩個數賦值,如果a不是int型,出錯

26樓:匿名使用者

我的理解

int a,*pa=&a;是正確的,相當於int a,*pa;pa=&a;即(int*)pa=&a。

而int a,*pa;* pa=&a;是錯誤的,因為*pa是值,&a是位址。

27樓:孤楠獨碧

int *p就是申請乙個int型的指標p,指標是用來儲存位址的,所以&a就是取得a的位址賦給p。但是int*p=a的話,a必須是個位址,可以是指標,也可以使陣列名。

28樓:不瀟撒的漁

int* p 是定義個指標變數,&是取址符;

所以int* p=a,是定義個整型指標變數,並將a賦值給該變數;

int* p=&a,是將a的位址賦給該整型指標變數;

c中intp和intp有什麼區別

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 int p 3 和int p 3 的...

日語和有什麼區別,和有什麼區別和聯絡啊?

是表示什麼東西,什麼事情怎麼樣?類似於英語的how about 是表示出了什麼事情,主語該怎麼辦。類似於英語的how to do 不知道這樣解釋,你是否了解。例句 夏 涼 那裡的夏天怎麼樣?據說很涼快。年寄 一人 外出 萬一 別讓老人家乙個人出門,萬一有個失閃怎麼辦?和 有什麼區別和聯絡啊?1 兩者...

讀和有什麼區別, 抱 讀 和 有什麼區別?

和 其實一個意思,較正式,用於書面形式,較文學化。就好像寫信與致函。但如果是要說抱有某些想法的時候,就要用 而不能用 抱 抱 摟 抱 除有抱 摟的意思外,還有懷有 懷抱的意思。比如 心懷大志 大 志 抱 前者指抱著抽象的物質 比如希望 後者指抱著實際的物質 比如小孩 一 區別 1 抱 是抱嬰兒等比較...