c語言指標問題。若有float a 25,b,p那麼語句p a和p怎麼

2021-03-27 07:39:32 字數 5189 閱讀 7944

1樓:匿名使用者

*p=a,指的是將a的數值賦予指標指向的變數。

p=&a,指的是將a的位址賦予指標p,即指標p指向a

float a=25,b,*p=&b中的*p=&b指的是定義指標p的同時將p賦初值。

若有定義float a,b,*p;下述正確的是? a.p=&b;scanf("%f",&a);*p

2樓:匿名使用者

這題正確的是d

a, *p是取位址的值,如p=&b,那麼*p就相當於b,不能對*p賦值位址

b, p是位址,在沒有賦值位址之前,不能對*p賦值,因為他不指示對應空間

c, 錯誤同b

c語音中指標p=&a,則*p=a,可以怎麼理解嗎

3樓:聽不清啊

可以這麼理解。

若int a=1234,*p=&a;

則*p的值就是1234

4樓:匿名使用者

指標就是位址,&是取位址符,所以第一句是讓p等於a的位址,*p可以就是那個位址裡存放的值,第二句是讓裡面的值等於a

*p=&a,*p=a和p=&a各是什麼意思,有什麼區別?

5樓:匿名使用者

表示式的意思:

1、*p=a的意思:將a的值賦給p指標指向的位址的值;

2、p=&a的意思是:將a的位址賦給指標p;

3、*p=&a的用法錯誤。

區別在於:

p=&a就是用a的位址對p賦值,a是乙個變數,&a就是儲存這個變數的記憶體位址,指標儲存的就是乙個位址,*p就是這一位址中的內容。

擴充套件資料另類*和&

兩個地方要注意: 在程式宣告變數的時候的*,只是表明「它是乙個無符號整數,這個整數指向某個記憶體位址,一次訪問sizeof(type)長度」。這點不要和(*)操作符混淆;

在c++程式宣告變數的時候的&,只是表明「它是乙個引用,這個引用宣告時不開闢新空間,它在記憶體分配表加入新的一行,該行記憶體位址等於和呼叫時傳入的對應引數記憶體位址」。

這點不要和(*)宣告符,(&)操作符混淆。

6樓:匿名使用者

1.一般來說*p=&a的表示方法是錯的,*p=a和p=&a是正確的。

2.*p=a的意思:將a的值賦給p指標指向的位址的值;

3.p=&a的意思是:將a的位址賦給指標p;

4.區別:*p是乙個值;p是乙個位址;兩者完全不相同。

5.*代表著p指向的位址的值,簡單來說就是取值;&是取位址符號,取的是位址;p是指標,可以理解為所指向的值的位址,*p就是取p指標指向的位址的值,&a就是取a的位址。

7樓:匿名使用者

*是解引用運算子 &是取位址運算子

8樓:小小小子

int *p=&a;

和int *p;pa=&a;等價

這裡的*是乙個指標說明符,不是間接定址運算子,我剛好看到這一點分享一下,前面幾個人都說這種是錯誤的,估計理解錯了吧

9樓:千古1帝劉公嗣

直接看**執行結果就

清楚了。

#include

int main()

10樓:匿名使用者

這個問題如下所述:

int b=5;a=10;// 定義變數a,並賦值為10;b=5

int *p=&b; //定義指標變數p,並且讓指標p指向變數b,其中 & 為

//取位址運算子

*p=a; //是將a的值就是10存放到指標p指向的變數b,這樣b的值不再是

// b=5,而是變成b=10

p=&a;// 這句是改變p 的指向,讓p指向變數a。例如還有下面的語句

*p=123; //那麼這樣後就會有p指向的變數的值為123.此處是a=123.

11樓:匿名使用者

& 取位址符 值相當與指標

* 取對應位址字元 型別與該位址所儲存的變數型別一樣

12樓:匿名使用者

*p=a是p取a值

而p=&a是取a 的記憶體位址

13樓:匿名使用者

第乙個&是指引用吧,*p=&a意思是p所指的值為a的引用

問一下:float *a 和 *float a 有什麼區別? 為什麼有時是p=&a,有時是p=a,有時是*p=a,後兩者有什麼區別?

14樓:匿名使用者

*a表示a是乙個指標(位址),無論是什麼修飾*a,a都是存了乙個4個byte的位址,區別是,你用了float修飾,表示這個位址指向的是float變數。

&a,表示取a變數的位址,例如int a=1;現在&a表示取a這個變數位址。

*p;表示取位址(指標)p指向的位址儲存的值,例如float a=10;

float *b=&a;//讓b指向a變數的位址*b=20;//改變指向的位址上的值

*p=a和float *p不同

前者裡*是運算子,表示取p指向的位址的值,後者只是表明這是乙個指標

設有int *p,a=2,b=1;則執行以下語句p=&a;*p=a+b;後,a的值為多少,為什麼

15樓:匿名使用者

3因為p是指標,指向a的位址,那麼*p即是p指向的位址的值改變,而p的位址就是a,所以a的值就發生了改變。

16樓:匿名使用者

a=3因為a的位址被p獲取後

p將a的內容賦為a+b,也就是3

若有定義和語句則輸出結果是

17樓:匿名使用者

p是指標,先指向a位址,後又改為指向b位址,*p = b;

pp是指標的指標,它指向了p的位址,而p又指向b的位址, 所以**pp取兩次值 就代表了b的值;

*號意義不同:

(1) 在定義時int **pp, *p ,表示定義的變數pp、 p為整型指標;

(2)printf("%d,%d\n",*p,**pp);這句中 *p表示取位址p中的值;

最好搞明白*符號的意義和指標的用法,那樣你就理解了

c語言中p=&a和p->a的區別,不是都表示指標p指向a嗎

18樓:匿名使用者

->只有在出現類的環境中才可用到,而&則隨時可用。

舉個例子有個類(或結構)x當中有整形成員a:

class x

;這時我們宣告該類的乙個物件a,並用你提到的第一句話來將a的位址賦值給指標p:

x a;

x* p = &a;

再寫語句如果需要呼叫p指向的位址中的變數,也就是物件a,那麼用如下表示式:

*p如果要訪問a中的成員a,那麼用如下表示式:

a.a如果想利用指標p來實現上述目的,那麼用如下表示式:

(*p).a

c++的編寫者將上述表示式簡單寫為:

p->a

19樓:匿名使用者

->指標操作符的優先順序非常高,。p->a是取得p指向結構體的成員a,等價於(*p).a

p=&a表示p是乙個指標,&a的位址賦予pstruct data

; /*定義結構體*/struct data * p;/*定義結構體指標*/struct data a = ;/*宣告變數a*/int x;/*宣告乙個變數x*/

p = &a ; /*讓p指向a*/

x = p->a;/*這句話的意思就是取出p所指向的結構體中包含的資料項a賦值給x*/

/*由於此時p指向a,因而 p->a == a.a,也就是1*/

20樓:丿北城丨涼築

a和p是變數,&a和*p是表示式,1和0x1000是常量a和*p表示的都是整形左值,p和&a表示的都是指標型左值,1和0x1000表示整形和指標型右值。(左右值的概念不清的話,google一下)

在記憶體中,a和p有儲存空間空間,a存放著1,p存放著0x1000,*p和&a沒有空間,他們的運算結果是在暫存器中存放的,1和0x1000也有空間,在程式的常量段存放。

*p按照stanley lippman的著作《c++ primer》中的描述,p是指標變數,*是解引用操作符,*p是乙個表示式,含義是「對指標變數p進行解引用操作」,這與表示式&a的含義「取整形變數a的位址」是正好是相反的操作。

21樓:阿凡達

p=&a 是對a的引用。p->a是指標p下的內容。對a的引用是對a起別名,對p進行操作就是對a的操作。

p->a的話,就是指標p指向的儲存單元的a。這個你對p操作的話就不會改變a。和前乙個是不一樣的!

22樓:匿名使用者

在用的時候完全可以混用

這是在搞笑嗎

23樓:季成佟橋

你說的復*(p++)h和*p++是等價的

但是這裡制的++是先用在加所以結果都是10要是程式是這樣的

#include

void

main()

,*p;

p=a;

printf("%d\n",*(p++));

printf("%d\n",*(p++));

p=a;

printf("%d\n",*p++);

printf("%d\n",*p++);

}結果就會變成11了

希望採納

c語言中*p=&b和int *p,p=&b有什麼區別?

24樓:匿名使用者

*p=&b

一般是二級指標會用到的,即*p的值是b地位址int *p, p=&b;

p指標指向b。同理,*p=&b,是*p指向b乙個是一級指標,乙個是二級指標

25樓:我個去又被註冊

*p=&b這個語句不合法吧。

int *p;p=&b; 這個語句的意思是p是乙個指向int變數的指標,現在把b的位址賦值給p。 &b是指b的位址。

c語言指標問題。若有int a0,1,2,3,4,5,6,7,8,9,0p a,i

a.a p a p a,p a 0,這裡就是bai引du用 a 0 b.a i a i 表示取第i 1個元素的位址zhi,位址,表dao 示引用位址中版的資料,這裡就是引用a i c.p i p是指標,位址,可以用權陣列元素引用方式來引用陣列元素。p i 就是a i d.a i a i是第i 1個元...

C語言指標問題,C語言指標問題

這個演算法最後的時候 p和q都是指向a的,在最後這個時候a的結構是,q之前的是所有的除了版 之外權 的字元。q之後的都是原來a裡面的資料,對於這個時刻是髒資料。最後把q指向的那個位置賦值為 0可以在遍歷a的時候,不遍歷到髒資料,而這個時候p正好指向的就是 0,所以 q p 迴圈結束條件是 p 0,因...

C語言這個F函式再指標C語言指標問題

28f為傳值呼叫。所以f中的修改不影響main中變數的值。輸出的還是原始值。即 4,3,5 選d29 a 4b a q b w q b q null a q 0 由於q已經賦值為null,再對 q賦值會引起程式崩潰。這個不對 b w p 指標間賦值,正確。c p a 也就是a a 正確。d p w ...