C語言中double p,a p和double a,p是不是等價的

2021-05-16 17:14:33 字數 5836 閱讀 5547

1樓:

二者是等價的。但你要搞清楚了,指標什麼時候也不加*。宣告指標時,那個*是double的而不是p的。

取指標指向的內容時的*p中的*是取值操作符,也不是p的!在一個型別符下宣告指標變數和普通變數時,在指標變數前寫一個*是為了區別這個變數是指標而不是普通變數,*也是前面的型別符的。如:

int a,*p,b,*q;就是宣告a、b為int型普通變數,p、q是int *型指標變數!

2樓:匿名使用者

等價的 指標變數在定義的時候要加* ,

使用的時候若是與其他指標做運算的時候就不用加*,例:double *q,*p; p=q

若是與非指標變數的時候就要加* 例*p=&a

3樓:匿名使用者

是等價的

指標變數加*表示取地址的逆運算

不加*就表示那個變數存放的地址

4樓:希望有絆腳石

凡是在型別後面加*的, 就是指標,, 我估計跟你說太多概念, 你也會模糊的。

自己好好看書好一些。 我的建議。。

c語言中double *p,a;p=&a;和double a,*p=&a;是不是等價的?

5樓:鄢昭君衡哲

等價的指標變數在定義的時候要加*

,使用的時候若是與其他指標做運算的時候就不用加*,例:double*q,*p;

p=q若是與非指標變數的時候就要加*

例*p=&a

6樓:仍易闕鈴

二者是等價的。但你要搞清楚了,指標什麼時候也不加*。宣告指標時,那個*是double的而不是p的。

取指標指向的內容時的*p中的*是取值操作符,也不是p的!在一個型別符下宣告指標變數和普通變數時,在指標變數前寫一個*是為了區別這個變數是指標而不是普通變數,*也是前面的型別符的。如:

inta,*p,b,*q;就是宣告a、b為int型普通變數,p、q是int

*型指標變數!

7樓:六秋緒佳

第一個問題

建立一個

double

型別的變數p,

並將數字a的第

1個元素複製給

p;第二個問題

建立一個

double

型別的變數p,

並將數字a的第

n+1個

元素複製給p;

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

8樓:匿名使用者

表示式的意思:

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

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

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

區別在於:

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

擴充套件資料另類*和&

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

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

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

9樓:匿名使用者

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

10樓:匿名使用者

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

11樓:小小小子

int *p=&a;

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

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

12樓:千古1帝劉公嗣

直接看**執行結果就

清楚了。

#include

int main()

13樓:匿名使用者

這個問題如下所述:

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.

14樓:匿名使用者

& 取地址符 值相當與指標

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

15樓:匿名使用者

*p=a是p取a值

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

16樓:匿名使用者

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

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

17樓:星呈幻

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

18樓:失落血天使

首先 a和p都是變數 1000是常量,這裡只有a和p分配了記憶體,但是1000和1沒有

p 是指p的值,也就是1000

&a 是指a的記憶體地址

*p 是指p的記憶體地址

a 是指a的值也就是1

1 是a的值,放在分配給a的地址裡

1000 是p的值,放在分配給p的地址裡形象點說 ,a和p是房子

1和1000是住戶,1 住在a裡 1000住在p裡p 是指p的住戶

&a 是指a的門牌

*p 是指p的門牌

a 是指a的住戶

1和1000 是住戶

書的話,譚浩強的 c語言程式設計第3版 裡面有詳細的說明帖子就不曉得咧·······

19樓:

&a取址 *p取值這沒有什麼可說的。

int *p; int a;

a的地址1000h,即&a == 1000h. p是指標,它本身也有存放它的地址,設1200h,

即&p == 1200h(win32下,指標本身長度32位即4位元組,可通過sizeof(p)得到). 這樣就是用到兩塊記憶體了。

p = &a; 即p == 1000h. 這是一個地址值,本質是值,即可以加減等操作的。但是加減後的p, *p可能就無法訪問了,因為它已經不指向a了,比如p == 1004h了,如果這是在某一函式裡操作的,而1004h地址並不本程式的地址空間裡,取*p時那就非法訪問,要崩潰的;但如果1004h地址正好是這函式裡另外一個int b;變數的地址,那*p的值就是b了。

*p表示取p指向地址的值,也就是1000h上的值; a = 1; 說明1000h上的值為1,所以*p == 1;a, 它本身只是一個符號而已,這個符號代表了地址1000h起的int型長(4位元組)的一個記憶體塊, a=1,就是記憶體塊放一個值1, 如果有彙編的思想,能更形象點:[1000h] = 1,根本不需要a,b,c...之類的字元來表示,直接對記憶體地址進行存取。

20樓:匿名使用者

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

1. int a = 1;

2. int *p; -> 他的地址是1000

3. p = &a;

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

1.在記憶體 某個 地址 放入一個int型的數字[1],這個 地址 符號名為 a

2.宣告一個指標,這個指標 在記憶體位置1000的地方 型別是指標,符號名為 p

3. [*p] 我們宣告時 就是 *p 這個形態 所以就叫他指標.

那麼:a 是記憶體某個地址的 符號,語法上我們用 &a 表示這個符號的真正記憶體地質。

*p 因為是型別是指標,我們不能賦予它值,只能給他一個要指向的地址,共享和修改那個地址裡的內容(先不考慮const語句),。指標p裡放著 a的地址,當電腦讀到 p 時,直接去找 裡面的地址去了。

p 指向地址,*p表示那各地址的內容。*p 英語裡就叫它 point p 即 指標p

過程:p = &a : p 複製 a的地址到自己的位置。

*p = 2 : 電腦判斷 p的型別,是指標,就跳到 p 裡的地址位置,在判斷型別,不是指標,就把當前位置裡的 值 改為 2,如果還是指標,就重複上面 直到遇到不是指標型別的地址。

至於名稱,就叫指標,變數是 總稱,變數 a, 變數 b, 給他們賦予範圍和型別 ,int型變數a,指標型變數p;

21樓:匿名使用者

首先我們明確a為一個變數 假設

定義是 int a;

再明確p是一個指標,假設定義為 int* p;

當我們定義了一個a是系統會分派一個記憶體給你用來存放他的數值,如 執行了a=10;後 這個記憶體就存放了一個10的數字,當我們要用到它表示的10時,直接用a替代就可以了。

現在我們再用 p=&a "&"叫取地址符,他是一個運算子。 "&a"就表示指向a有就是上面的那個存著10的記憶體的地址。如果我們用到a的時候,很明顯,我們不能直接用p了,因為他是一個地址而不是我們需要的10這個數,那怎麼辦呢?

我們這裡就可用"*"這個符號,他表示取這個指標所指記憶體上的資料,即 *p就表示a了用法什麼的都一樣。

22樓:辯一辯

*p就是a...

p是一個變數,其實它裡面存的值就是1000,它在哪個記憶體空間放著這個不可知。

而a是在第1000號空間放著的。&a的值等於p.而*p就是a(不只是相等),並且值等於1

23樓:匿名使用者

p, &a表示a在記憶體中的地址,p=&a 表示把a在物理中的地址給變數p,*p表示取出p在記憶體中的值,

因為a的值在記憶體中的地址與p相同,所以*p=a。

關於c語言方面的數個人覺的還是譚浩強的比較經典。

24樓:匿名使用者

p=&a=1000; *p=a=1;

&是取地址符,*是去地址中的值。

25樓:

* 表示取值,& 表示取記憶體地址。&a表示取a的記憶體地址,*p即*(&a)表示取a的記憶體地址的值,也就是a吧

c語言中的d是什麼意思,C語言中的 d是什麼意思

表示把資料按十進位制整型輸出,類似的符號含義如下 o表示把資料按八進位制整型輸出 x表示把資料按十六進位制整型輸出 u表示把資料引數按無符號整型輸出。f顯示小數表示的普通浮點數。這個是格式控制符 d是int型的輸出控制符.在printf函式中表示輸出整型數 c是char型的輸出控制符.在printf...

c語言中的d是什麼意思,C語言中的d 是什麼意思

d 表示有符號十進位制整數,c 表示字元。這一類符號是 格式說明 用於格式輸入與格式輸出,就是我們常見的printf和scanf函式中在輸入輸出時,對不同型別的資料 如int,float,char等 要使用不同的格式說明。擴充套件資料 c語言中所有格式化型別的定義 1 d i 接受整數值並將它表示為...

c語言中n5d什麼意思,C語言中n5d什麼意思

用於printf輸出 一般形式為 printf n 5d a 後面的a 為一個整型的變數名。表示 n輸出換行 5d 輸出a值,佔五 版個字元權寬度。不足部分 補空格。如果實際超出5個字元寬度,那麼按照實際長度輸出。請問c語言中 n 5d 什麼意思呢?換行之後輸出一個五位的整數,不足則用空格補齊,多餘...