2013-07-27 85 views
0
struct abc 
{ 
    char name[20]; 
    int studno; 
    float tax; 
} rec1, rec2; 

我剛起步的架構和老師教得不好,我需要幫忙澄清一下代碼。糾正我,如果我錯了謝謝。結構C編程需要說明,不懂代碼

所以struct abc =結構的名字? 它包含3個字段,一個數組,整數爲學生號和浮動類型爲稅號 以及rec1,rec2是什麼?如果rec1,rec2都是* rec1,* rec2,有什麼區別?

非常感謝

回答

2

問題:

  1. struct abc結構的名字?是的。
  2. struct abc是否包含三個字段?是的,它的確如此。結構元素爲:name(固定大小爲20的字符數組),一個包含學生編號的整數:studnotax - 這是一個浮點變量。
  3. 什麼是rec1rec2rec1rec2只是struct abc的變量實例。這是在定義結構的同時自動聲明兩個變量的簡寫方式。例如,爲後來聲明一個變量使用相同的結構定義,你會做這樣如下:

    struct abc mystruct = {};//initialize the struct variable mystruct 
    
  4. 如果rec1rec2都是*rec1*rec2 - 有什麼區別?在這種情況下,您已創建了struct abc類型的兩個指針變量。這意味着他們可以指向struct abc的變量或實例,而不是rec1rec2,它們只是struct abc的實例。

討論:

對於第4點),在實踐中,這意味着:

實施例1

struct abc mystruct = {}; 
mystruct.name = "My Name"; 

然而,由於指針可以到存儲器,和rec1rec2是struct abc類型的指針,這意味着你可以指向變量或的實例。然後,常見的用法是:

實施例2

struct abc mystruct = {}; 
mystruct.name = "My Name"; 

struct abc *abc_pointer = &mystruct;//abc_pointer is now _pointing_ to mystruct 

訪問,而不是使用點/訪問運算符的結構元件,如通常那樣在第一和第二實施例中的規則結構,則所要做的不同,使用指針到構件操作者:

實施例3:

struct abc *abc_pointer = &mystruct;//abc_pointer is now _pointing_ to mystruct 
abc_pointer->name = "Steve";//because you're pointing to mystruct, you can access and modify the values within. In this case, we're changing the name from "My Name" to "Steve" 

這樣做的另一種方法是:

(*abc_pointer).name = "Steve"; 

當然,還有比我描述,您可以用這些知識功率做得更多。欲瞭解更多的話題,請閱讀以下內容: http://boredzo.org/pointers/

0

rec1rec2是你與struct abc類型創建的兩個變量。

struct abc { 
    char name[20]; 
    int studno; 
    float tax; 
}; 

struct abc rec1, rec2; 

如果你定義一個變量:

你可以很容易地構造specificion從變量建立有獨立的

struct abc *rec3; 

然後rec3將是一個指針類型是爲了指向struct abc類型的變量。