我有一个这样的结构:
struct foobar {
int i;
char *word;
};
我知道这会起作用:
struct foobar {
int i;
char *word;
};
struct foobar three = {3, "three"};
为什么以下不起作用?
struct foobar {
int i;
char *word;
} three;
three = {3, "three"};
它会给出错误:expected expression before ‘{’ token
.
它不起作用,因为 C 不知道 {3, "two"} 应该是什么类型; C 不会查看“=”运算符的左侧来猜测您的类型,因此您那里没有任何类型信息。在 C99 中,您可以使用复合文字来实现此目的:
three = (struct foobar) { 3, "three" };
强制转换给出了类型、大括号中的值和初始值设定项。结果被分配给你的变量三。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)