gpt4 book ai didi

c - 不明白C中的指针

转载 作者:行者123 更新时间:2023-11-30 18:40:50 25 4
gpt4 key购买 nike

我显然误解了c中指针的用法。书上说编写一个程序,找到两个数字中最大的一个,并将这些变量的值更改为较大的值,但我做错了。这是我的代码,有人可以帮忙吗?

/*finds the largest of two variables, replaces them with it*/
#include <stdio.h>

void larger_of(double *i, double *j);

int main(void) {
double i, j;
printf("Please enter two numbers.\n");
scanf("%lf %lf", &i, &j);
printf("i is %lf and j is %lf.\n", i, j);
larger_of(&i, &j);
printf("Now i is %lf and j is %lf.\n", i, j);
printf("DONE\n");

return 0;
}

void larger_of(double *i, double *j) {
double *ptr1 = &i;
double *ptr2 = &j;
if(i > j) {
*ptr1 = *i;
*ptr2 = *i;
} else {
*ptr1 = *j;
*ptr2 = *j;
}

return;
}

最佳答案

larger_of你应该有两行:

double *ptr1 = i;
double *ptr2 = j;

请注意删除了与号 ('&')。那里有&符号应该是错误的,因为你正在设置 ptr1ptr2发送至 i地址j ,等等ptr1ptr2应该是double** s,但它们不是。

此外,您还需要检查是否*i > *j ,而不是如果 i > j ,因为您想要比较指针指向的值,而不是指针本身( i > j 比较指针指向的地址)。

但是,您可以创建 larger_of将其改为以下内容更简洁:

void larger_of(double *i, double *j)
{
if (*i > *j)
*j = *i;
else
*i = *j;
}

如果i指向的值大于 j 所指向的值,然后设置j指向的值指向i 。对 else 执行相反的操作.

关于c - 不明白C中的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24687453/

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