結構

2014-12-09 79 views
-4

我想知道的是什麼結構

int a; 

struct node{ 
    int a; 
}; 

struct node b; 

他們是同一間差距的認識概念?

+1

基本的東西! int是一個整數。結構是一個結構 – 2014-12-09 13:08:09

+3

第二個片段正在審查[右邊的門](http://i.imgur.com/7OZfY8T.png)。只用一個成員聲明一個結構通常不會有用。 – 2014-12-09 13:09:02

回答

2

不,它們不一樣。在ab的語言允許的操作是不同的,因爲它們的類型是不同的。當它們包含相同的位模式時,這些位模式的解釋可能不同。

編譯器可能採取不同的途徑從函數返回int vs struct node,或者將它們作爲函數參數傳遞。

實質上ab.a具有相同的行爲。編譯器有時可以選擇使用成員類型優化單個成員結構。

差異
1.編譯時間:一類和b的類型是不同的
2.編譯時間爲:a = 42(OK),B = 42(錯誤)
3.運行時間:編譯器可能會選擇使用不同的策略,同時將a和b複製到同一類型的其他變量中。 4. section 6.7.2.1 in the C99 standard有可能是一個結構對象內無名填充,但不是在它的開始。,這意味着sizeof a允許是不等於sizeof b

額外筆記
單件結構幾乎總是不需要的,除非
1.其他成員是有條件編譯出來的。 (保持代碼可管理)
2.當您計劃將數組作爲函數參數傳遞時,使用賦值運算符從函數或複製數組中返回數組。
3.限制操作。 [例如,你不想emp_id被添加,減去等,但分配是OK]

2

不,他們是不一樣

int a; - >一個整數類型爲a的變量。

struct node b;→變量名稱爲b類型struct node

這裏,該結構只包含int a但事實並非如此總是。這兩個變量是

  1. 確實是不同的數據類型。
  2. 表示方式不同。
  3. 訪問方法不同。
+1

親愛的@downvoter,請通過發表評論讓我知道這個答案中的錯誤。 – 2014-12-09 13:16:18

+2

不要在意匿名downvoter並分享你認爲正確的東西,除非被別人解釋爲不正確。 – 2014-12-09 13:17:26

+0

@MohitJain好吧,你是先生,但有時候這真的是激動人心的。 – 2014-12-09 13:18:38

0

根據你的例子,兩者都是相同的。但結構主要用於使用公共變量名訪問多個變量。

struct node { 
     int a; 
     float b; 
     char c; 
}; 
struct node b; 

因此,現在使用變量b我們可以訪問三種不同的數據類型。所以這是結構的主要優點。

訪問該結構作爲普通變量。 b.a; 如果你正在使用指針,那麼這將是b-> a。請注意,你必須爲此分配內存。

+0

請......答案應該提供格式碼。 BTW downvote不是從我。 – 2014-12-09 14:11:40