我正在学习在我的操作系统类中使用C,这就是到目前为止我的函数中找到两个数组的交集的方法。
交集基本上是当你取两个集合,你只得到两个集合中的元素时。
例如,如果集合A包含= {1,2,3},集合B包含= {2,3,4},则A和B的交集是{2,3}。我正在尝试用C语言创建一个函数,该函数获取两个数组,并返回一个包含两个传递数组中的整数的数组。
我想我几乎有了解决方案,但是我得到了一个错误:“标识符'count‘is undefined”
int intersection(int array1[4], int array2[4])
{
int arrayReturn[sizeof(array1) + sizeof(array2)]
int count = 0;
for(int i = 0; i < 4; i++)
{
for(int j = 0; j < 4; j++)
{
if(array1[i]==array2[j])
{
count = count + 1;
arrayReturn[count] = array1[i];
}
}
}
}我非常习惯Java,我觉得Java和C几乎是一样的。我真的找不到哪里出了问题,因为count在if语句的作用域内。我不明白为什么count是未定义的。
count出了什么问题,我该如何修复这个交集函数?
发布于 2013-02-20 10:18:12
在count声明前的行中缺少分号。
int arrayReturn[sizeof(array1) + sizeof(array2)]; //Semicolon Here
int count = 0;我是如何看到这个错误的?错误消息是identifier 'count' is undefined,所以我首先检查的是编译器告诉我的原因。然而,这并不是问题所在,因为声明就在那里,并且在正确的范围内。那么,现在我该怎么做呢?我应该查看变量初始化之前的行,以及用法之前的行。这就是你肯定会发现错误的地方。
简而言之,当编译器消息似乎没有帮助时,不要停止。看看周围。
同样,正如GRAYgoose124指出的,你应该在你的函数体的末尾有一个返回语句,因为你的函数应该返回一个整数。
发布于 2014-01-25 23:53:26
此行缺少分号:
int arrayReturn[sizeof(array1) + sizeof(array2)]; //semicolon was missing发布于 2013-02-20 10:22:29
正如AshRj所指出的,您缺少一个分号。
提示:clang编译器在提供诊断输出方面非常出色。如果你尝试用它编译你的代码,你会得到下面的输出:
source.c:3:57: error: expected ';' at end of declaration
int arrayReturn[sizeof(array1) + sizeof(array2)]
^
;即使你没有正常地使用clang编译你的项目,你也可以尝试编译代码片段来帮助你找出问题所在。这就是我对你的片段所做的,就像你can see here一样。(也请注意警告。)
https://stackoverflow.com/questions/14971202
复制相似问题