怎麼理解c語言中 a p的意思,怎麼理解C語言中 a p m 的意思

2021-03-18 15:32:19 字數 5527 閱讀 5769

1樓:匿名使用者

a=p1==&m;

意思就是

如果指標p1 是指向m所在的記憶體,那麼a = 1;否則 a = 0就是先判斷倆指標是不是相等,然後賦值給a

2樓:一曲邪吟

==優先運算。如果p的值等於m的位址,a=1,否則a=0

相當於表示式a=(p==&m?1:0);

3樓:笨笨陸漸

它是個判斷加賦值的語句。

若p1==&m值為真,a=1,反之a=0

4樓:匿名使用者

這句話可以這樣表達,更加清晰

if(p1 == &m)

else

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

5樓:非常可愛

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));

6樓:育知同創教育

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

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

7樓:匿名使用者

如果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賦值。

8樓:匿名使用者

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

9樓:匿名使用者

對於指標來說,

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

p = a[0],把

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

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

10樓:天雨下凡

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

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

int *p,a;

p=&a;

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

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

11樓:匿名使用者

#include

int main()

12樓:平野律子

舉個例子吧: 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記憶體區通常是不可寫的,這樣就會報錯。採納哦

13樓:爵爺

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

14樓:百度使用者

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

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

15樓:

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

例如:int *p;

p=&b;

*p=a[0];

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

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

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

16樓:星呈幻

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樓:失落血天使

首先 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版 裡面有詳細的說明帖子就不曉得咧·······

18樓:

&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...之類的字元來表示,直接對記憶體位址進行訪問。

19樓:匿名使用者

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

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;

20樓:匿名使用者

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

定義是 int a;

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

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

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

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

c語言中的intp5int5怎麼理解

int p5 int 5 p5是個指標,指向乙個具有乙個int 型形參的函式,這個函式返回乙個指向具有5個int元素的陣列的指標。c語言中int p 5 與 int p 5 的區別 你是不想問 int p 和int p 的區別啊 的優先順序高於 所以前者表示指標陣列,而後者是陣列指標,例如int p...

c語言中cabcab是什麼意思,C語言中cabca,b是什麼意思

max 是個函式,表示取其中最大的值。比如a 3,b 4,則max a,b 4 a 4,b 3,則max a,b 4 a 3,b 3,則max a,b 3 c語言中c abc a,b 是什麼意思 這是乙個函式呼叫的語句,c等於abc函式的返回值。一般這麼寫abc是乙個函式,也就是存在 fun typ...

c語言中string怎麼用啊,C語言中有string嗎?

用於輸入輸出的字串函式,在使用前應包含標頭檔案 stdio.h 使用其它字串函式則應包含標頭檔案 string.h c語言幾乎是現在所有高校必須學的科目之一,現在軟體業的發展急需c語言天才來進行開發。c語言提供了豐富的字串處理函式,大致可分為字串的輸入 輸出 合併 修改 比較 轉換 複製 搜尋幾類。...