我有以下数组,
struct Student{
char* Name;
int age;
Student* Next;
};
我曾经按照以下步骤访问char *字段。
方法1;
Student s1 = {strdup("Name1"),26};
方法2:
Student s2;
s2.Name = strdup("Name2");
s2.age = 26;
这里我想知道有没有其他方法可以访问char *字段,如果没有,是否有特定的,最好的方式来访问char *字段?。
在结构中使用名称,地址等数据结构的最佳方法是什么?我应该使用上面的方法char *?或者我可以有阵列吗?或者字符串在这里有意义吗?(有没有其他方法可用而不是char * .char array [],string stringname)
我的最终目标是使用最佳访问方法正确建立数据结构。请帮助!!!
struct DataStruct{
(char*/char [] / string) Name; // Need a best way
}
也是访问机制。
如果我们只有三个机制,比如char *,char []和string, 那么请告知从main()访问它们的最佳方法。
非常感谢
答案 0 :(得分:0)
至于char*
/ char[]
和std::string
之间的选择,正如我在评论中所说:
C样式字符串引入了不必要的“指针层”(就直接使用而言)。他们也有被终止的不便。
std::string
以方便的方式抽象出来
关于不同的初始化方法: 两者几乎等同于,。
这意味着没有任何转变,
Student s1 = {strdup("Name1"),26};
和
Student s2;
s2.Name = strdup("Name2");
s2.age = 26;
可以互换。
区别在于其他地方:
Student s1 = {strdup("Name1"),26};
cout << s1.Name;
Student s2;
cout << s2.Name;
s2.Name = strdup("Name2");
s2.age = 26;
这里有我们称之为Undefined Behavior的内容。您在初始化/给定值之前访问s2.Name
。
如果您必须选择,请选择Student s1 = {strdup("Name1"),26};
,以保证对会员的任何使用都有效。
如果您需要(在某些情况下)第二种方法,那么请确保您正在访问的内容实际上已初始化。