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...