struct abc
{
char name[20];
int studno;
float tax;
} rec1, rec2;
我剛起步的架構和老師教得不好,我需要幫忙澄清一下代碼。糾正我,如果我錯了謝謝。結構C編程需要說明,不懂代碼
所以struct abc =結構的名字? 它包含3個字段,一個數組,整數爲學生號和浮動類型爲稅號 以及rec1,rec2是什麼?如果rec1,rec2都是* rec1,* rec2,有什麼區別?
非常感謝
struct abc
{
char name[20];
int studno;
float tax;
} rec1, rec2;
我剛起步的架構和老師教得不好,我需要幫忙澄清一下代碼。糾正我,如果我錯了謝謝。結構C編程需要說明,不懂代碼
所以struct abc =結構的名字? 它包含3個字段,一個數組,整數爲學生號和浮動類型爲稅號 以及rec1,rec2是什麼?如果rec1,rec2都是* rec1,* rec2,有什麼區別?
非常感謝
問題:
struct abc
結構的名字?是的。struct abc
是否包含三個字段?是的,它的確如此。結構元素爲:name
(固定大小爲20的字符數組),一個包含學生編號的整數:studno
和tax
- 這是一個浮點變量。什麼是rec1
和rec2
?rec1
和rec2
只是struct abc
的變量實例。這是在定義結構的同時自動聲明兩個變量的簡寫方式。例如,爲後來聲明一個變量使用相同的結構定義,你會做這樣如下:
struct abc mystruct = {};//initialize the struct variable mystruct
如果rec1
和rec2
都是*rec1
和*rec2
- 有什麼區別?在這種情況下,您已創建了struct abc
類型的兩個指針變量。這意味着他們可以指向struct abc
的變量或實例,而不是rec1
和rec2
,它們只是struct abc
的實例。
討論:
對於第4點),在實踐中,這意味着:
實施例1
struct abc mystruct = {};
mystruct.name = "My Name";
然而,由於指針可以點到存儲器,和rec1
和rec2
是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/
rec1
和rec2
是你與struct abc
類型創建的兩個變量。
struct abc {
char name[20];
int studno;
float tax;
};
struct abc rec1, rec2;
如果你定義一個變量:
你可以很容易地構造specificion從變量建立有獨立的
struct abc *rec3;
然後rec3
將是一個指針類型是爲了指向struct abc
類型的變量。