2012-10-22 263 views
2

考慮:* a = b和a =&b之間的區別是什麼?

int **a; // (double pointer) 
int *b; // (pointer) 

*a=ba=&b之間有什麼區別?

+0

您的問題標題與您的問題主體不符。哪一個是正確的? –

+0

我不明白,什麼不匹配? –

+0

*你認爲什麼?你爲什麼不能推斷'='符號兩側的外部類型? –

回答

6

第一個,*a = b;將變量b的值複製到a指向的位置。

第二個,a = &b將地址b複製到a

2
*a = b; 

你分配的b到哪裏a所指向的值。

a = &b; 

在這裏,我們在內存中分配的b地址a

1

*a = b分配b的位置,其中a

a = &b指向的b地址分配給變量a

1

&它是得到的變量

*的地址是能夠檢索由指針指向的值的運算符,間接,你應該調用這個過程中,運營商。

所以是的,這兩個聲明是不同的。

0

我認爲這裏的問題是兩者在實踐中的區別。這個例子說明了這一點:

int x = 10; 
int *y; 
int *z; 

y = &x; 
*z = x; 

printf("x: %d, *y: %d, *z: %d\n", x, *y, *z); 

x = 20; 

printf("x: %d, *y: %d, *z: %d\n", x, *y, *z); 

的價值指向z不更新爲20的新的x值,而值指向Y並。

相關問題