我是新與所有的C語言編程,我有一個問題點上,如何複製指針,以相同的對象
如果我有例如結構 - 我指着它,我想創建一個新的指針,以指向相同的數據,但不是指向同一個對象的兩個指針。 如何在不復制結構中的每個字段的情況下做到這一點?
typedef struct
{
int x;
int y;
int z;
}mySTRUCT;
mySTRUCT *a;
mySTRUCT *b;
a->x = 1;
a->y = 2;
a->z = 3;
,現在我想2b對同一數據
b = *a
這不是正確的點,編譯器在我吼
任何幫助將是巨大的!謝謝:)
爲什麼它* b = * a而不是b = * a?我無法理解之間的區別:b = a,* b = a,b = * a,* b = * a。我可以得到一個簡短的解釋嗎? – user1386966 2012-07-09 12:06:35
@ user1386966:'a'和'b'是指針。 '* a'和'* b'是他們指向的東西。你想把'a'指向的東西複製到'b'指向的東西上。因此你寫'* b = * a'。 'b = a'將指針'b'改變爲與'a'具有相同的值,這是改變'b'指向與'a'指向相同的東西的另一種方式。 'b = * a'和'* b = a'是沒有意義的,因爲你不能使一個結構等於一個指針。 – 2012-07-09 12:27:24
我常用的比喻,順便說一句,指針就像一張寫着街道地址的紙。它指向的東西(又名「referand」)就像一座建築物。你不會把建築物('* b)'與寫有建築物地址的東西混淆('b')。 '* b = * a'的意思是「在'b'上的地址上建造建築物,並使其與地址爲'a'的建築物相同。 'b = a'的意思是「將寫在'a'上的地址複製到'b'」。當你注意到在C語言中,你可以用一個指針指向'a' - 甚至可以在C中使用自己的地址。 – 2012-07-09 12:49:50