gpt4 book ai didi

c - 在我的函数中出现错误,该函数使用 C 中的指针返回数组中的值

转载 作者:行者123 更新时间:2023-12-01 11:55:05 24 4
gpt4 key购买 nike

我正在尝试学习 C 中的数组和指针。我正在尝试编写一个在函数中的程序:从用户那里获取 2 个数字,将它们放入一个数组中,然后将它们返回给主函数。我收到一个错误,我不明白问题出在哪里。这是我的代码:

#include<stdio.h>

void get_nums(float *x)
{
float num1, num2;

printf("enter two numbers: ");
scanf("%f %f", &num1, &num2);

*x[0] = num1;
*x[1] = num2;

}

main(){

float x[2];
float (*p_x)[2] = &x;

get_nums(p_x[2]);

printf("Number 1: %f\nNumber 2: %f", x[0], x[1]);

return 0;
}

我在这两行上遇到错误

    *x[0] = num1;
*x[1] = num2;

错误信息是

Error: operand of '*' must be a pointer

我看不出哪里错了。有人看到问题了吗?

编辑:我将 2 行更改为

    x[0] = num1;
x[1] = num2;

现在我可以运行程序了。但是,输入这两个数字后出现新错误。错误信息是:

  Unhandled exception at 0x40e00000 in arraysandpointers.exe: 0xC0000005: Access violation.

最佳答案

您不需要 *。就这样就好了:

x[0] = num1;
x[1] = num2;

在您的原始代码中,x[0] 已经是 float 类型。 *x[0] 会尝试引用它——这是不可能的,因为 x[0] 不是指针。因此它无法编译。

编辑:也将您的主要内容更改为:

int main(){

float x[2];
get_nums(x);

printf("Number 1: %f\nNumber 2: %f", x[0], x[1]);

return 0;
}

p_x 不是必需的。这就是导致崩溃的原因。

关于c - 在我的函数中出现错误,该函数使用 C 中的指针返回数组中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8044854/

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