有一个struct变量代表标签

时间:2017-07-05 01:00:52

标签: c arrays struct

我是c的新手并且正在使用结构来返回一个数组,我设法生成结构就好并且也使用了结构,但我做了一个非常丑陋的方法将我的数组导入到我的结构中。有什么方法可以用for循环来做到这一点吗?

这是我目前用于将数组传输到结构中的代码:

result.a = input3[0];
result.b = input3[1];
result.c = input3[2];
result.d = input3[3];
result.e = input3[4];
result.f = input3[5];
result.g = input3[6];
result.h = input3[7];
result.i = input3[8];

我试着让它像这样工作:

for (char j = 'a'; j <= 'i'; j++)
{
    result.j = input[j - 97];
}

但是,有道理,我得到的错误是'j':不是值的成员,它拒绝编译。使程序意识到我试图引用变量而不是结构的索引需要什么样的格式化? 谢谢!

2 个答案:

答案 0 :(得分:0)

structarray是两种不同的动物,你应该使用最适合这项工作的动物。 array用于存储所有相同类型的元素列表。数组的元素由数字索引访问,因此对元素有一个排序。另一方面,struct旨在保存可能具有不同类型的相关数据。您可以按名称访问结构的成员。这允许我们忽略元素的顺序。

当然,您可以在struct中包含一个数组,但除非struct中还有其他数据元素,否则您应该使用裸数组而不是struct与阵列成员。

答案 1 :(得分:-1)

在C中,编译器的成员名称是编译器已知的;它们仅在编译时使用。它们不是正在运行的程序的一部分(除了调试功能和可能的特定于编译器的语言扩展)。

数组的主要目的是以编程方式处理多个元素(即,以程序运行时计算的方式)。下标用于选择成员。

如果要在结构中包含多个可以通过编程方式处理的项目,则可以定义结构以在其中包含数组,例如:

struct Foo;
{
    int MyArray[10];
}
…
struct Foo MyFoo;

然后,您可以使用MyFoo引用MyFoo.MyArray[i]内的数组中的项目。您必须使用数字作为下标。