如何解决声明后初始化结构
我有一个名为point
的结构,它存储变量x
和y
。
typedef struct point{
int x,y;
}point;
在函数内部,我定义了一组类型为point
的结构,供以后在程序中使用。
point p1,p2,p3,p4;
然后我稍后尝试在检查条件的if语句中初始化变量。尝试初始化变量时,我不断收到不同的错误。完成我想做的事情的正确方法是什么?
if(check1 != 0){
p1 = { x,y };
}else if(check2 != 0){
p2 = { x,y };
}else if(check3 != 0){
p3 = { x,y };
}else if(check4 != 0){
p4 = { x,y };
}
编辑:作为变量名的数字仅出于示例目的,在程序的其余部分中其他内容也是如此。抱歉造成混乱!
解决方法
标识符(作为变量名)不能以数字开头。大多数情况下,您使用字母。建议您声明如下变量:
point point1,point2,point3,point4;
,
使用compound literals,您可以这样做:
p1 = (struct point){ x,y };
,
首先,初始化是在声明过程中为变量提供值时。您只能这样做一次。稍后给它赋值称为 assignment 。
编写代码的正确方法是使用数组和循环,以实现简单的线性搜索算法。示例:
bool check [N] = /* something */ ;
point point_arr [N];
for(int i=0; i<N; i++)
{
if(check[i] != 0)
{
point_arr[i].x = x;
point_arr[i].y = y;
break; // break the loop and stop searching here
}
}
另一种语法是使用所谓的复合文字并编写point_arr[i] = (point) {x,y};
,与上面的代码等效。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。