[英]Global Char Pointer (C Programming)
我剛剛開始通過創建小程序來學習C語言。
現在,我正在創建一個需要結構或全局的程序,因為稍后我的函數中的某個地方我只想直接調用它們。
我不喜歡使用struct,因為我擔心它會增加seg的機會。 代碼行之間的某種錯誤。
我的問題是:這兩個是一樣的嗎?
struct myTrialStruct{
char *trialOne;
char *trialTwo;
char *trialThree;
};
和
extern char *trialOne;
extern char *trialTwo;
extern char *trialThree;
char *trialOne;
char *trialTwo;
char *trialThree;
如果沒有,有人可以告訴我創建全局字符指針的正確方法,而無需創建結構嗎?
如果變量構成對象,則應使用struct
。 如果他們這樣做:
struct myTrialStruct{
char *trialOne;
char *trialTwo;
char *trialThree;
} myGlobalVar;
只需將其寫在源文件的頂部即可。 myGlobalVar
是struct myTrialStruct
類型的全局變量。
或者,如果三個變量是序列的一部分,請使用數組:
char *myGlobalArr[3]; // array of char *
使用struct
不會增加段錯誤的可能性; 粗心的指針會。
並嘗試限制全局變量的使用。 您的代碼將變得非常混亂,修復錯誤將更加困難。
如果您有一個編譯單元,那么將這些聲明放在任何函數之外就足夠了。
char *trialOne;
char *trialTwo;
char *trialThree;
如果您要使用幾個可以訪問這些指針的編譯單元,那么您應該將這些聲明放在標題中
extern char *trialOne;
extern char *trialTwo;
extern char *trialThree;
並在某些模塊中放置指針的這些定義
char *trialOne;
char *trialTwo;
char *trialThree;
標頭應包含在需要訪問這些指針的任何編譯單元中。
至於你的問題
這兩個是一樣的嗎?
然后這些
struct myTrialStruct{
char *trialOne;
char *trialTwo;
char *trialThree;
};
一個類型聲明,它是一個結構聲明,沒有創建對象。
而這些是對象聲明
char *trialOne;
char *trialTwo;
char *trialThree;
您可以定義結構類型的對象,例如folloiwng方式
struct myTrialStruct{
char *trialOne;
char *trialTwo;
char *trialThree;
};
struct myTrialStruct hlobal_pointers;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.