1. 程式人生 > 其它 >C語言中->和.有什麼區別

C語言中->和.有什麼區別

1、指向不同

一般情bai況下用“du.”,只需要宣告zhi一個結構dao體。格式是,結構體類zhuan型名+結構體名。然後用結構體名加shu“.”加域名就可以引用域 了。因為自動分配了結構體的記憶體。如同 int a;一樣。
而用“->”,則要宣告一個結構體的指標,還要手動開闢一個該結構體的記憶體,然後把返回的指標給宣告的結構體指標,才能用“->”正確引用。

否則記憶體中只分配了指標的記憶體,沒有分配結構體的記憶體,導致想要的結構體實際上是不存在。這時候用“->”引用自然出錯了,因為沒有結構體,自然沒有結構體的域了。

2、讀法不同

(*a).b 等價於 a->b。"."一般情況下讀作"的”。

“->”一般讀作"指向的結構體的"。

3、作用的不同

在“結構”一單元中出現的->運算子成為“右箭頭選擇”,在使用中可以用new_node->value = 10;來代替(*new_code).value = 10;

也就是說在結構中,運算子->是運算子*和運算子.的結合,在上述語句中,他先對new_node間接定址以定位所指向的結構,然後再選擇結構的成員value。

比如你有這個結構體:

struct xx 
{ 
  int a; 
  int b; 
} yy, *kk; 

那麼

yy.a=3;
yy.b=5; 
kk=new xx; 
kk->
a=4, kk->b=6;

也就是說你用結構體定義了一個實體,那麼這個實體要引用他裡面的成員,就用.操作符,如果你用結構體定義的是一個結構指標,那麼要引用他裡面的成員就用->