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