2

我正在学习在我的操作系统类中使用 C 语言,这就是我目前所拥有的用于查找两个数组交集的函数。

交集基本上是当你拿两个集合并且你只得到两个集合中的元素时。

例如,如果集合 A 包含 = {1,2,3},集合 B 包含 = {2,3,4},则 A 和 B 的交集是 {2,3}。我正在尝试在 C 中创建一个函数,该函数获取两个数组并返回一个包含两个传递数组中的整数的数组。

我想我在这里几乎有了解决方案,但我收到一条错误消息:“标识符‘计数’未定义”

    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 是如何未定义的。

计数有什么问题,我该如何解决这个交叉函数?

4

4 回答 4

3

count您在声明之前的行中缺少分号。

  int arrayReturn[sizeof(array1) + sizeof(array2)]; //Semicolon Here
  int count = 0;

我是怎么看到错误的?错误消息是identifier 'count' is undefined我检查的第一件事是编译器告诉我的原因。然而,这不是问题,因为声明在那里,并且在正确的范围内。那么,现在我该怎么办?我应该查看变量初始化之前的行和使用之前的行。这是您肯定会发现错误的地方。

简而言之,当编译器消息似乎没有帮助时,不要停止。看看周围。


此外,正如 GRAYgoose124 指出的那样,您应该在函数体的末尾有一个 return 语句,因为您的函数应该返回一个整数。

于 2013-02-20T02:18:12.163 回答
1

此行缺少分号:

int arrayReturn[sizeof(array1) + sizeof(array2)]; //semicolon was missing
于 2014-01-25T15:53:25.880 回答
0

正如 AshRj 指出的那样,您缺少分号。

提示:clang编译器非常擅长提供诊断输出。如果你尝试用它编译你的代码,你会得到以下输出:

source.c:3:57: error: expected ';' at end of declaration
        int arrayReturn[sizeof(array1) + sizeof(array2)]
                                                        ^
                                                        ;

即使您没有正常使用 clang 编译项目,您也可以尝试编译代码片段来帮助您找出问题所在。这就是我对你的片段所做的,你可以在这里看到。(请注意警告。)

于 2013-02-20T02:22:28.977 回答
0
void readArr(int  arr1[],int n1, int arr2[],int n2,int arr3[]){
int n=0;
int j=0;
for(j=0;j<n1;j++){
    for(int k=0; k<n2;k++){
        if(arr1[j]==arr2[k]){
            int element = arr1[j];
            int k=checkArrayContains(arr3,n,element);
            if(k==1){
                printf("%d\n",arr1[j] );
                arr3[n]=arr1[j];

                n++;

            }

        }

    }
}

displayArray(arr3,n);}

我认为这个实现更清楚。

于 2018-12-29T18:02:25.503 回答