【问题标题】:In C, how do I "directly" copy a struct to an array member?在 C 中,如何“直接”将结构复制到数组成员?
【发布时间】:2020-10-23 11:59:25
【问题描述】:

所以我想这样做:

struct element{
  int t;
};

int main(int argc, char *argv[]) {
  struct element arr[10];
  arr[0]={3};
  return 0;
}

但这给了我以下错误:

test.c: In function ‘main’:
test.c:7:10: error: expected expression before ‘{’ token
    7 |   arr[0]={3};
      |          ^

要解决这个问题,我将不得不求助于写作:

int main(int argc, char *argv[]) {
  struct element arr[10];
  struct element tmp = {3};
  arr[0]= tmp;
  return 0;
}

但是我认为当我只想直接分配给element{3}时,写一个tmp值是不雅的。如何修复语法以便不需要创建此 tmp 值?

【问题讨论】:

  • 顺便说一句,struct element tmp = element{3} 这不是有效的 C 代码。虽然它是有效的 C++。

标签: arrays c struct


【解决方案1】:

你想要的是一个复合文字

arr[0]=(struct element){3};

【讨论】:

  • 有多少次因为作者不知道 C 语言中存在这个特性而编写了可笑的代码块来做这件事,这让我哭笑不得。
猜你喜欢
  • 1970-01-01
  • 2010-10-03
  • 1970-01-01
  • 2014-10-19
  • 2020-04-21
  • 1970-01-01
  • 1970-01-01
  • 2014-05-28
  • 1970-01-01
相关资源
最近更新 更多