gpt4 book ai didi

c++ - 一元 '*' 的无效类型参数(具有 'int' )数组中的最低元素

转载 作者:行者123 更新时间:2023-11-30 20:23:55 24 4
gpt4 key购买 nike

我想使用函数 lowest() 查找数组中的最低元素。但这个程序不起作用。它显示错误

invalid type argument of unary '*' (have 'int')

这是代码:

#include <stdio.h>

int lowest(int *j, int n) { //For finding the lowest element
int i, temp, tempAdd;
for (i = 0; i < n; i++) {
if (temp > *(j + i))
temp = *(j + i);
tempAdd = j + i;
}
return tempAdd; //Sends the address of the lowest element
}

int main() {
int n;
printf("Enter the number of inputs: ");
scanf("%d", &n);

int arr[n], i;

for (i = 0; i < n; i++) {
printf("\nEnter element no. %d: ", i + 1);
scanf("%d", &arr[i]);
}

for (i = 0; i < n; i++) {
printf("Element no. %d is %d with the address %d.\n", i + 1, *(arr + i), arr + i);
}

int low = lowest(arr, n); //Saves the address of the lowest element.
printf("\nThe Lowest element in the list is %d with address %d.", *low, low); //Error occurs
return 0;
}

最佳答案

您的函数lowest有问题:

int lowest(int *j, int n) { //For finding the lowest element
int i, temp, tempAdd;
for(i = 0; i < n; i++) {
if(temp > *(j + i))
temp = *(j + i);
tempAdd = j + i;
}

return tempAdd; //Sends the address of the lowest element
}
  • 您忘记了 if block 周围的大括号。缩进并不决定 C 中的 block 结构。
  • 语义不一致:您将索引返回到最低元素,但将 tempAdd 设置为 j + i,这是指向最低元素的指针。
  • 您没有初始化temp,也没有初始化tempAdd。该行为未定义。
  • 命名指针j很容易混淆,j通常指定一个整数索引。使用p

这是一个更简单的版本:

int lowest(int *p, int n) { //For finding the lowest element
int i, tempAdd = 0;
for (i = 1; i < n; i++) {
if (p[i] < p[tempAdd]) {
tempAdd = i;
}
}
//Return the index of the lowest element
return tempAdd;
}

在 main 中,您应该修改代码,因为 low 不是指针:

printf("\nThe Lowest element in the list is %d with address %d.",
arr[low], &arr[low]);

关于c++ - 一元 '*' 的无效类型参数(具有 'int' )数组中的最低元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35099480/

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