繁体   English   中英

如何正确使用 C 结构体数组

[英]How to Properly use Array of Structures of C

我最近开始学习 C 语言中的结构。 我尝试了一个示例程序来扩展我的学习曲线。 但是,在这个主题中,我面临一些错误。 任何人都请找出以下程序中的错误。

#include<stdio.h>
main() {
 int i;
 struct elements {
  int z; /* Atomic Number */
  float m; /* Mass Number */
  char *name;
  char *symbol;
 };
 struct elements e[5];
 e[0] = (struct elements){1,1.008,"Hydrogen","H"};
 e[1] = (struct elements){2,4.0026,"Helium","He"};
 e[2] = (struct elements){3,6.94,"Lithium","Li"};
 clrscr();
 for(i=0;i<3;i++) {
  printf("Element Name: %s\n",e[i].name);
  printf("Symbol: %s\n",e[i].symbol);
  printf("Atomic Number: %d\n",e[i].z);
  printf("Atomic Mass: %0.2f\n",e[i].m);
 }
 getch();
 return 0;
}

这显示以下错误消息:

在此处输入图像描述

尽管有其他评论,但如果这是您必须使用的,那么您仍然需要解决方案。

尝试:

struct elements e[5] = {
    {1,1.008,"Hydrogen","H"},
    {2,4.0026,"Helium","He"},
    {3,6.94,"Lithium","Li"}
 };

您所拥有的将在以后的编译器上工作(尽管有些人希望namesymbol的结构中的char const *接受字符串文字),但实际上它读起来不是很漂亮,在定义整个数组时也没有必要。

如果这样做,您可以省略数组大小(将[5]更改为[] ),它将根据提供的元素数量调整大小。

您没有使用标准 C 编译器,因此您无法使用标准 C 语言编写代码。

您将不得不求助于被称为“C89”/“C90”的 1989 年版本的 C 语言。 它不支持复合文字功能(struct elements){1,1.008,"Hydrogen","H"}; ,因为那个是 23 年前添加到 C 语言中的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM