papa和pa各是什麼意思有什麼區別

2021-03-04 09:14:02 字數 6027 閱讀 5043

1樓:匿名使用者

表示式的意思:

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

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

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

區別在於:

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

擴充套件資料另類*和&

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

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

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

2樓:匿名使用者

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的地址。

3樓:匿名使用者

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

4樓:小小小子

int *p=&a;

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

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

5樓:千古1帝劉公嗣

直接看**執行結果就

清楚了。

#include

int main()

6樓:匿名使用者

這個問題如下所述:

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.

7樓:匿名使用者

& 取地址符 值相當與指標

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

8樓:匿名使用者

*p=a是p取a值

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

9樓:匿名使用者

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

*p=a,*p=&a,p=&a有什麼區別

10樓:金色潛鳥

分清在語句裡,還是在宣告裡。

同樣寫法,在語句裡 與 在宣告裡 意思不同,也許成立,也許不成立。

int a=10; // 宣告 a 是整型變數,初始化數值為 10

int *p; // 宣告 p 是整型 指標

語句裡:*p = a; // 語句裡 *p 是值, 把 a 的 數值10 賦給 *p,

語句裡: *p=&a; // 語法錯 !

語句裡: p=&a; // 語句裡 p 是地址, 把 a 的 地址 賦給 p

-----------------------------

int a=10; // 宣告 a 是整型變數,初始化數值為 10

int *p=&a; // 宣告 p 是整型 指標, 初始化 指向 變數 a , 語法對。

-----------------------------

int a=10; // 宣告 a 是整型變數,初始化數值為 10

int *p=a; // 語法錯

------------------------------

int a=; // 宣告 a 是整型陣列,初始化一個元素,數值為 10

int *p=a; // 正確,讓 p 指向 a 的 首地址

*****====

所以要分清 變數形式,在什麼場合,宣告裡 還是 語句裡。

外貌相同,意思不 同。-- c/c++ 困惑人的地方。

11樓:匿名使用者

int a = 10;

int *p;

*p = a; //這種寫法是錯誤的,因為p沒有開闢空間。

//----------------

int *p = &a; //正確,指標p指向a//----------------

int *p;

p = &a; //正確,指標p指向a下面這2種寫法是一個效果。

c語言中*p=&a和p=&a有什麼區別

12樓:非常可愛

c語言中*p=&a和p=&a只有一個區別就是指標初始化時間不同。

p=&a:p是1維指標;

*p=&a:p是2維指標;

p=&a示例:

inta;

int*p;

a=5;

p=&a;

printf("valueis:%d.",*p);

擴充套件資料*p=&a的使用

int a, b, c;

int **p;

a = 5;

b = 6;

c = 7;

p = (int **)malloc(el_**t * sizeof(int *));

*p = &a;

*(p + 1) = &b;

*(p + 2) = &c;

for(int i = 0; i < el_**t; i++)printf("value is : %d\n", **(p + i));

13樓:育知同創教育

總得來說沒區別,就是指標初始化的時間不同而已int *p = &a;//這裡p宣告的時候直接初始化它的值為變數a的地址

int *p;//宣告指標p,p的值不確定可能指向任何地址,p = &a;//顯示初始化使p指向a的地址

14樓:匿名使用者

如果a都是基礎型別, 而不是指標, 比如a為int那麼 p=&a, 是把a的地址,賦值給p, p需要是int *型別。

而*p=&a 是把a的地址賦值給*p, p需要是int **型別。

注意 如果是int *p=&a;這種形式

是定義int *型別的p, 並給p初始化為&a。 等效於int *p;

p=&a;

還是給p賦值,而不是給*p賦值。

15樓:匿名使用者

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的地址。

16樓:匿名使用者

對於指標來說,

*p = a[0],表示向地址為p的記憶體區域賦值為a[0]。

p = a[0],把

變數p的值改為a[0],這個語句正常應用中是錯誤的。變數p的值為記憶體地址,這樣賦值會丟掉p原來指向的記憶體。

正確給記憶體地址賦值應該使用第一句。

17樓:天雨下凡

這樣問說明你對指標的概念還不清楚,以下兩種方式等價:

一、先宣告指標,再給指標賦值

int *p,a;

p=&a;

二、定義指標的同時給它賦值

int a,*p=&a; //這裡的*p可以解釋成int * p,int *表示p是指向int型變數的指標

18樓:匿名使用者

#include

int main()

19樓:平野律子

舉個例子吧: a是一個陣列,它在記憶體中的初始地址比如說是0x11111111(簡單假設),且a[0]的值是1,也就是說,記憶體0x11111111中儲存的值是1。 於是,&a[0]=0x11111111,a[0]=1。

int *p; p=&a[0]; 指標p會有一個自己的記憶體地址,通常佔用4個位元組(比如初始地址是0x22222222)。p的值是&a[0],也就是說從0x22222222開始,後面4個位元組中儲存的值是0x11111111。 *p的值就等於p所指向的記憶體地址中儲存的值,也就是a[0]。

所以*p等於1。 如果*p=&a[0]的話,很容易出問題。比如說int *p之後,p的初始值可能是0xcccccccc(debug版本)或者0x00000000(release版本)。

這個時候,如果你寫一句*p=&a[0]的話,將會把0xcccccccc或者0x00000000記憶體之後4個位元組的值變為0x11111111。 而0xcccccccc和0x00000000記憶體區通常是不可寫的,這樣就會報錯。採納哦

20樓:爵爺

在定義指標的同時讓指標指向某個地址 如int *p=&a;不能直接使用*p=&a; p=&a;代表的是讓p指向變數a的地址

21樓:百度使用者

*p=&a;是將a的地址賦值給*p,結果會是一個十六進位制的數。 第二個是讓p指向a的地址空間。*p的傎和a相等。

int a=2,*p; *p=&a; 列印*p應該是一個地址值,很長一串, p=&a; 打*p印結果會是2;

22樓:

有啊,*p是個指標,他儲存的是一個變數的地址。你把a[0]裡的資料賦給他,是儲存在那個變數中,不是在存*p中。另一個p是個變數,a[0]中的資料時存在p中

例如:int *p;

p=&b;

*p=a[0];

b==a[0] 值是放在b中

另一個是放在p中 ,不同的

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

23樓:天雨下凡

這樣問說明你對指標的概念還不清楚,以下兩種方式等價:

一、先宣告指標,再給指標賦值

int *p,a;

p=&a;

二、定義指標的同時給它賦值

int a,*p=&a; //這裡的*p可以解釋成int * p,int *表示p是指向int型變數的指標

24樓:匿名使用者

#include

int main()

{int *p,a=0xaa; //宣告 int指標

c語言裡面指標,*p=&a和p=&a,有什麼區別

25樓:匿名使用者

如果a都是基礎型別, 而不是指標, 比如a為int那麼 p=&a, 是把a的地址

,賦值給p, p需要是int *型別。

而*p=&a 是把a的地址賦值給*p, p需要是int **型別。

注意 如果是int *p=&a;這種形式

是定義int *型別的p, 並給p初始化為&a。 等效於int *p;

p=&a;

還是給p賦值,而不是給*p賦值。

26樓:匿名使用者

第一個p是指標的指標,第二個p是指標。

欣慰是什麼意思欣慰和安慰各是什麼意思有什麼分別

通過一個人或者一件事,讓人發自內心的滿意,歡喜,並且從心裡感到寬慰,簡單來說,因為喜歡而感到心安!十分滿足,結果達到或超出期望,給心理一個安慰 就是對別人的行為或事感到心裡高興滿意。解釋 心裡歡喜而感到的安慰。例 看到昔日的學生們都取得了顯著成績,的臉上露出了欣慰的笑容。謝謝採納 欣慰是漢語詞彙,拼...

駁船是什麼意思,大船和駁船各是什麼意思? 有什麼區別?

我暈怎麼都是這樣回答的,真是不負責任!事實上的駁船不是像他那樣複製下來的內容,應該是這樣的 駁船就是大船在錨地拋錨,各項手續齊備後,將大船貨物卸到小船以便運往各客戶的過程中,承載 分流大船貨物的船隻 駁船之所以出現,是因為有些港口靠泊不了大型海船,受到吃水限制,還有個原因就是,大船不可能為了幾個幾個...

各什麼意思,各是什麼意思?

各部首 口部 五筆 tkf 筆畫 6筆 g 每個,彼此不同 別。得其所。盡所能。有千秋。自為政。g 自 兒 g r 自己,亦作 自個兒 各是什麼意思?windows nt 2000 2003 xp 32 bit 64 bit windows nt作業系統 2000作業系統 2003作業系統 xp作業...