gpt4 book ai didi

c - C 中的错误 "Expression must have a pointer to object type"

转载 作者:行者123 更新时间:2023-11-30 16:07:44 30 4
gpt4 key购买 nike

我正在尝试构建一个 bool 函数来检查两个未排序的数组是否具有相同的元素。但是每次我尝试调试程序时,我都会收到错误“表达式必须有指向对象类型的指针”。我已经尝试了一切。似乎什么都不起作用。谁能告诉我我做错了什么?


#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include<stdbool.h>

bool haveSameElems(arr1, arr2, size);

void main()
{
int size;

scanf("%d", &size);
int* arr1 = (int*)calloc(size, sizeof(int));
for (int i = 0; i < size; i++)
{
scanf("%d ", &arr1[i]);
}
int* arr2 = (int*)calloc(size, sizeof(int));
for (int i = 0; i < size; i++)
{
scanf("%d ", &arr2[i]);
}

bool ans = haveSameElems(arr1, arr2, size);

printf("%s", ans ? "true" : "false");
}

bool haveSameElems(arr1, arr2, size)
{
for (int i = 0; i < size; i++)
{
for (int j = 0; j < size; j++)
{
if (arr1[i] == arr2[j]) // I keep getting the error here
{
return true;
}
}
}
}

最佳答案

您的函数声明 bool haveSameElems(arr1, arr2, size)bool haveSameElems(int arr1, int arr2, int size) 隐式相同,每 Frankie_C 。要将arr1arr2用作数组,必须将它们声明为指针:bool haveSameElems(int *arr1, int *arr2, int size) 。因此,您需要在代码顶部的函数声明及其对应的函数定义中添加这两个星号。 始终显式编写类型是一种很好的做法,而不是依赖 Frankie_C 在评论中提到的旧 K&R 风格隐式 int 类型。您可以在底部框 here 和“下标”部分 here 中阅读更多相关信息。

您还可以在 haveSameElems 末尾处返回 need return false,并且 main 必须返回类型 int 如果您正在使用较旧的 C 编译器。请参阅 here

关于c - C 中的错误 "Expression must have a pointer to object type",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59542393/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com