C語言中 pa,這是什麼意思p a這又是什麼意思?這兩名可以等效麼?作用和意義是不是一樣的

2021-03-20 05:42:47 字數 6800 閱讀 3085

1樓:匿名使用者

p = &a代表指標指向a

*p =a,如果a是個具體數值則可,否則語法錯誤

2樓:jack康

p=&a,意思是把a是地址給p,這個p定義的時候是一個指標變數,*p=a,也是這個意思,比如a=2,那麼*p就是等於2,p是存放2這個值的空間的地址,可以等效。

3樓:草柏渡

一樣吧。第一個應該是先定義p,比如int *p;就是定義一個指標p。p = &a。

就是將a的地址存在p中。*p=a是指將a的值賦給指標p指向地址的內容。實際對應的地址是一樣的,每句話表達的意思稍有差異。

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

4樓:匿名使用者

表示式的意思:

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

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

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

區別在於:

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

擴充套件資料另類*和&

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

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

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

5樓:匿名使用者

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

6樓:匿名使用者

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

7樓:小小小子

int *p=&a;

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

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

8樓:千古1帝劉公嗣

直接看**執行結果就

清楚了。

#include

int main()

9樓:匿名使用者

這個問題如下所述:

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.

10樓:匿名使用者

& 取地址符 值相當與指標

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

11樓:匿名使用者

*p=a是p取a值

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

12樓:匿名使用者

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

在c語言中這句語句的意思是什麼

13樓:匿名使用者

int *p;

宣告瞭一個叫做p的指標,此時p不知道指向何方(未初始化)int a = 100;

宣告並初始化了一個整數a(=100)

p = &a;

讓p指向a(將p設定為a的地址)(把a的地址寫入p)(即初始化p為a的地址)

*p = a;

把a複製到p所指向的內容(此時p一定不能是未初始化的,否則會有未定義行為出現)

14樓:劍指書海

int *p 定義了一個指標變數,給a賦值100,&a 就是取儲存a的地址,p=&a;p就指向a的地址,故*p=100。

15樓:巫馬尓絲

p = &a 是 讓p指向a的地址,

*p=a 的字面意思是 把a賦給p的指向,

這兩句基本一樣,你好好理解一下上邊兩句話就懂了。

c語言中,p=&a 那麼*p與a的區別是什麼?

16樓:默q寇w綇

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的地址地是正好是相反的操作。

17樓:螆x莢d處

c語言中%p用來輸出指標型別自身的值。

也就是說 %p用來輸出地址。

一、使用方法:

%p一般僅用於printf及同類函式中。形式為printf("%p", varp);

其中後續引數varp為某一個指標變數。如

int a,*p;

p=&a;

printf("%p %p", p, &a);

這裡輸出的p和&a都是int*型。

二、功能:

%p格式符會輸出指標本身的值,也就是指標指向的地址值。

該輸出為16進位制形式,具體輸出值取決於指標指向的實際地址值。

三、與%x區別:

%x同樣輸出16進位制形式,不過%x對應的是int型,也就是說,其輸出長度與系統int型佔的位元組數相等。如32位編譯器,int型佔4位位元組,那麼%x輸出的結果最多為16個16進位制字元。

而%p輸出寬度取決於系統地址匯流排位數,即16位最多輸出4位16進位制字元,32位最多輸出8位16進位制字元,64位最多輸出16位16進位制字元。

所以用%p輸出地址,相對於用%x輸出,可以有更好的移植型和適應性,不會因為更換平臺而引起錯誤。

最近在自學c語言 請問一下 p=&a,和*p=a有什麼區別麼 (能舉一下例子麼)

18樓:

p=&a表示,p這個變數(記憶體地址)裡面存的是a這個變數(即,記憶體地址)的地址。p在宣告的時候,已經有自己的地址了,這樣的用法就是把p裡面的值改了,是安全的。

*p=a表示,p這個變數(即,記憶體地址)裡面存的那個地址,其所儲存的值為a這個變數的值。如果p裡面的值(注意,是p裡面的值,不是*p,也不是&p)是個非法的地址,比如說,你沒有給初始值。那麼,*p=a會導致segementation fault(linux下,如果windows下沒出問題,那就是windows自己的底層庫給p預設了安全的數值,但是,純從標準上看,是不應該未初始化就這麼寫的。

)另外:p=&a;

*p=b;

就會導致,a == b 為真。想想這個a是怎麼變成與b相等的。這個例子應該足夠理解其中區別了。

19樓:匿名使用者

p是指標變數,它儲存的是指標

p=&a 是把a的地址給p

而*p則和a是一個型別,就是說*p相當於一個儲存資料的變數,*p=a就是把a的值賦給*p

例如把你的兩個語句p=&a;*p=a 那麼 a的地址先賦給了p, 之後p就是a的地址,*p實際就是a了,*p=a就是把a的值存入p地址所標示的記憶體單元中,實際上如果把這兩句放一起,後面那句*p=a就是沒用的了。

20樓:熱情的蠟筆小欣

p是一個指標,是存放地址的,p=&a表示把a地址賦給p而*p=a表示把p所指地址裡面的內容賦值為a你可以當做房子的地址,a就是房子裡面的內容懂了嗎?

望採納!

21樓:搬紅磚的小男孩

如果不區分大小寫的話。

根據你的賦值。

p是一個指標變數。

a是一個變數。

p=&a, 把變數a的地址賦值給指標變數p。

*p=a 變數a的值賦值給a指向的記憶體單位。

22樓:匿名使用者

p是指標,它的數值是指向一個記憶體的地址,

&a的意思是取變數a的記憶體地址,所以p=&a的意思就是把變數a的記憶體地址賦值給指標p

*p的意思是取出p指向的記憶體地址的內容,所以*p=a的意思是把變數a的資料複製給指標p指向的記憶體空間.

23樓:匿名使用者

p=&a取的是變數a所存放的地址,後面那個取的是值!

24樓:哈哈哈

沒什麼區別 意思都是一樣的

25樓:木星沒有木

前者是吧a的地址賦給了p,後者是把a的值給了p

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

26樓:woshi菜鳥

p=&a,p的值是a的地址,

*p=&a,a的值是a的地址,

*是取內容符!!!

27樓:匿名使用者

inta;int*p=&a;相當於int*p;p=&a;記住就行了;除了定義的時候,其他時候*p(正常情況)只能等於內容(a的值);

28樓:薩好慕仝金

在定義指標的同時讓指標指向某個地址

如int

*p=&a;不能直接使用*p=&a;

p=&a;代表的是讓p指向變數a的地址

29樓:之飛蘭保岑

總得來說沒區別,就是指標初始化的時間不同而已int*p

=&a;//這裡p宣告的時候直接初始化它的值為變數a的地址int*p;//宣告指標p,p的值不確定可能指向任何地址,p=&a;//顯示初始化使p指向a的地址

30樓:狄廣英勤璧

*p=&a;是將a的地址賦值給*p,結果會是一個十六進位制的數。

第二個是讓p指向a的地址空間。*p的傎和a相等。

inta=2,*p;

*p=&a;

列印*p應該是一個地址值,很長一串,

p=&a;

打*p印結果會是2;

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

31樓:清鵬之

讓我來綜合一下吧

在定義的時候

int *p=&a; 是等同於 int=*p;   p=&a;的。該形式只在定義的時候是正確的。就是指標p所指向地址的內容為a的內容。

如果不是定義的時候

*p=&a; 就是它字元的那個意思,就是指標p所指向地址的內容為a的地址。

dev c++試了下

————————————————————————————————————

「*p」表示地址為p儲存單元的內容;「p」表示地址;「&a」表示取a的地址;a為變數。

int *p;//初始化指標,但是該指標無指向地址!如果直接使用會有問題。

int *p=&a;//初始化指標,該形式只在定義時正確,表示以p指標所指向地址的值為變數a的值。

p=&a;//表示指標p所指向的地址就是a的地址。即地址間的賦值。

*p=a;//表示指標p所指向地址的內容就是內容a。

在c中,指標一定要初始化,指標加1指的是增加一個儲存單元。對陣列而言,這意味著把加1後的地址是下一個元素的地址,而不是下一個位元組的地址,這是為什麼必須宣告指標所指向物件型別的原因之一。

32樓:匿名使用者

首先來說一下*和&,為了便於理解你可以認為,這裡*是取內容,&是取地址。

我不討論它們的區別,因為*p=&a這個形式一般是錯的,常用的是p=&a。

下面比較*p=a和p=&a。看圖,圖很詳細。

顯然它們是等價的。

然後比較*p=&a和p=&a;

則這兩種都是對指標變數的賦值,賦值有兩種形式

①先定義後賦值

int a=3,*p;(定義指標變數*p)

p=&a;(對指標變數取地址)

②定義變數的同時賦值

int a=3,*p=&a

也就是說在賦值時,

int *p=&a

相當於int *p,

p=&a

它們的區別其實就是

int *p=&a是同時定義*p並對賦值p(即a的地址賦給p),而p=&a,只是對p賦值,沒有定義指標變數。

但要注意,只有在同時定義賦值時「*p=&a」這種寫法才是對的

其他情況下不要用*p=&a,這種形式,因為根本就不對,如下圖。我之前一直的疑問是為什麼賦值時*p=&a就不算錯了?後來老師給的解釋是這種形式只有在上面那種情況下成立,其他的情況確實都是錯的。

c語言中,假設pa是指標,那麼pa 的作用是什麼

pa 包含兩個語句,一 pa pa 1,即pa指向的地址的值加1,二pa pa 1,即指標後移一個單位。定義一個指標pa,那麼 pa,pa,pa都是什麼意思?首先要清楚一個變數在記憶體中 在編譯或者函式呼叫時 都是會分配地址的如果有以下定義 int a,pa a 那麼 pa 表示pa所指向的目標變數...

c語言中dt什麼意思C語言中t是什麼意思?

c語言中 d 是格式字元,意思是資料以十進位制整數形式輸出 t 是轉義字元,意思是水平製表 跳到下一個tab位置 在c語言中還有其它格式字元,o 意思是以八進位制整數形式輸出 x 意思是以十六進位制整數形式輸出 c 意思是以字元形式輸出 s 意思是以字串形式輸出。等等 在c語言中還有其它轉義字元,n...

c語言中fun是什麼意思,C語言中funa,b是什麼意思

就是個自定義標抄識符,通常用襲作自定義函式bai的函式名,是函式dufunction這個詞的開頭字zhi母。通常舉dao例子的時候,不知道該叫什麼名了,就取名fun或func或function。前幾年我回答過這種問題,結果題主採納的是一幫胡扯答案的。這次我就看看還有沒有睜眼說瞎話胡扯的。c語言中fu...