首先來說一下*和&,為了便於理解你可以認為,這裡*是取內容,&是取位址。
我不討論它們的區別,因為*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 中 p a和p a的區別
大學初學指標的時候,時常懵逼,有時候覺得自己已經掌握了,但是一看複雜的程式和原始碼裡的指標用法,就又蒙了,以至於談指標色變。至於二級指標,陣列指標 指標陣列 函式指標什麼的更是被嚇懵。現在來逐個擊破他們,為我們的程式設計道路掃清阻礙。首先需要明白一點的是,指標是個變數,它和int型別 float型別...
p a 與 int p a 的區別
int a int p a 將整形變數a的位址放入指標p中。int a 1 int p a 將陣列a的首位址放入指標p中。int p之後是位址變數。int p int a 1 include int main int p int a 1 a表示整個陣列的位址 printf d d a 1 p 1 輸...
與 有什麼區別
一 簡要說明 按位與 a b是把a 和b都轉換成二進位制數然後再進行與的運算 邏輯與 a b 就是當且僅當兩個運算元均為 true 時,其結果才為 true 只要有乙個為零,a b 就為零。例如 a b 9 8 1001 1000 結果是1000 a b 9 8 結果是1 對每乙個都判斷 只要前面是...