我有一个名为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 };
}
编辑:作为变量名的数字仅出于示例目的,在程序的其余部分中其他内容也是如此。抱歉造成混乱!
答案 0 :(得分:1)
标识符(作为变量名)不能以数字开头。大多数情况下,您使用字母。建议您声明如下变量:
point point1, point2, point3, point4;
答案 1 :(得分:1)
使用compound literals,您可以这样做:
p1 = (struct point){ x, y };
答案 2 :(得分:1)
首先,初始化是在声明过程中为变量提供值时。您只能这样做一次。稍后给它赋值称为 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};
,与上面的代码等效。