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