繁体   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