簡體   English   中英

全局字符指針(C編程)

[英]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;

只需將其寫在源文件的頂部即可。 myGlobalVarstruct 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM