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語言提供了豐富的字串處理函式,大致可分為字串的輸入 輸出 合併 修改 比較 轉換 複製 搜尋幾類。...