【问题标题】:Declaring and modifying Static array of structure -CPP声明和修改结构的静态数组 -CPP
【发布时间】:2017-02-18 09:50:52
【问题描述】:

我在头文件中定义了一个结构,它是这样的数组:

struct
{
int a;
 char* b;
 } S_element, s_array*;

static s_array my_data[3] = {1,"first", 2, "second", 3, "third"     };

在源代码中,我包含了这样一个头文件并访问了这个数组。我正在尝试更改数组元素结构内的字符串变量 b 的值,但是当我尝试更改 struct member - b 的值时,程序此时崩溃了。

对于此问题代码中的语法错误,我们深表歉意。到目前为止,我只能使用我的手机。

我不确定涉及静态成员的概念,以及以这种方式初始化数组,而无需为单个结构元素使用花括号。

【问题讨论】:

  • C 还是 C++?请选择一种编程语言!

标签: c++ c arrays struct


【解决方案1】:

struct{...}a;struct name{...}; name a;一样

你不能写static s_array my_data[3],因为s_array是结构,而不是类型。

另外,这不是重新启动结构数组的方法。

改为:

typedef struct{

int a;

 char* b;

 } S_element, *s_array;

static S_element my_data[3] = {{1,"first"}, {2, "second"}, {3, "third"}};

看到我改成了 S_element 因为 s_array 是一个指针,而不是一个结构体。

另外,不要在标题中使用static,只能在函数中使用。

【讨论】:

  • 因为 s_array 是结构,而不是类型 ...什么? O.o
  • 感谢您指出我的代码中的问题。现在在一个函数中,我循环遍历每个数组元素并尝试为结构成员重新分配不同的值。但是当我这样做时程序崩溃了。静态成员中的值是只读的吗?
  • 因为s_array是struct,不是type表示不能写:struct{...} a; a b;
猜你喜欢
  • 1970-01-01
  • 2020-11-09
  • 1970-01-01
  • 2017-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多