如何在c / c ++中访问结构中的数组

时间:2018-05-27 11:59:44

标签: c++ arrays string struct char

我有以下数组,

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()访问它们的最佳方法。

非常感谢

1 个答案:

答案 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};,以保证对会员的任何使用都有效。 如果您需要(在某些情况下)第二种方法,那么请确保您正在访问的内容实际上已初始化。