intp和intp有什麼區別

2021-03-07 00:31:02 字數 5744 閱讀 4568

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

int **p和int *p有什麼區別

3樓:怕不他啊不了

int *p表示的

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

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

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

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

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

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

4樓:匿名使用者

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

5樓:匿名使用者

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

6樓:匿名使用者

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

7樓:hello你個

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

8樓:匿名使用者

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

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

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

9樓:匿名使用者

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

10樓:匿名使用者

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

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

11樓:匿名使用者

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

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

12樓:匿名使用者

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

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

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

13樓:匿名使用者

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

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

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

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

14樓:

int a[10];

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

int a;

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

15樓:捧一米陽光

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

16樓:匿名使用者

我的理解

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

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

17樓:孤楠獨碧

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

18樓:不瀟撒的漁

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

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

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

19樓:

我猜你的 a是int型的 假設定義了 int a = 12; 那麼 int *p = a;編譯是通不過的, 因為這裡p初始化是把 int 型直接賦值給了 int*這是編譯器不允許的, 而後者 int *p = &a, 是把變數a的地址賦值給指標p 意思是把a的地址儲存在指標的記憶體空間中, 我們查詢 *p 是根據指標p儲存的地址去找到a的。

20樓:我的查出

int *p=a相當只要你給與a一個具體的值該指標將指到那兒

int *p=&a是&a中的a是你輸入的值所在的位置而p指的是地址a的地址

21樓:匿名使用者

int *p=a p指標的值(p代表的地址)是a

int *p=&a 表示p指標指向的是a的地址,p的值是a的地址

22樓:匿名使用者

前者是將a的內容賦給指標p(也就是p指向a指向的資料)

後者是將a的地址賦給指標p(也就是p指向a)

23樓:匿名使用者

int *p=a 表示p指標的地址是a

int *p=&a 表示p指標指向的是a的地址,p的值的a的地址

24樓:匿名使用者

nt *p是定義一個指標 對應的該是地址

int*p=&a 則a是個指標或陣列

int*p=&a 則a是個資料

25樓:胡曉帥

前者a的型別應該為int*,為負值操作,p的值等於a的值

後者a的型別應該為int,為取地址操作,p的值等於a的地址

26樓:天蠍

1)int *p=a;

舉例:int *p=100;

p是一個指標變數,將一個常量賦給一個指標變數,p等於地址0x00000064,即p是指向某個數的指標變數,該數的地址是0x00000064,一般實際中沒這麼用;跑下程式:

2)int *p=&a;

舉例:int a=100; int *p=&a;

a是一個變數,p就是指向a的指標變數,即p等於a的地址;跑下程式:

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

27樓:大野瘦子

一、意思不同

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*

它會報錯。

請問intp 4和int p ,請問 int p 4 和 int p 4 的區別並舉例

4 p的區別bai 由於裡面du牽扯一些東西比較深,zhi我簡單的dao講講吧 p 4 是指標陣列內,容 他是陣列。陣列裡面放的是指標,簡單的說定義了4個指標,分別是 p 0 p 1 p 2 p 3 相當於將這四個指標打包到這個陣列中 p 4 是陣列指標,他是指標並且是一個指向二維陣列的指標。因為以...

int p和intp ,int p 10 和 int p 10 的問題

的名稱是取值運抄算符,襲 它的優先順序比 低,因此導致了 p 10 和 p 10 意義不同,p 10 即 p 10 p 先與 10 結合,成為 p 10 陣列,說明 p 是一個陣列,再取 p 陣列的值,一個指標肯定不夠,所以需要十個指標,p 就是指標陣列了。p 10 p 先與 結合,即取 p 的值,...

c語言指標,inta1intp其中pa和

指標本質就是儲存記憶體地址的一個變數。所以指標可以指向某個變數在記憶體中儲存的單元格嘛。變數去訪問單元格最後也是編譯器通過變數名和地址一一對應去查詢的。而指標裡面直接儲存的就是地址,所以直接可以訪問地址所對應的單元格。不知道樓主說的是說明情況。所以幾種可能的都說一下 測試 include stdio...