gpt4 book ai didi

c - 指针无法正确打印值

转载 作者:行者123 更新时间:2023-11-30 18:17:03 24 4
gpt4 key购买 nike

我想问为什么我的代码不起作用我已经厌倦了很多事情但无济于事,由于某些特殊原因程序可以找到数组的最小值但无法找到它的最小值并返回值 0.000000。希望下面的代码有帮助。

这就是我的主要功能。

int main(void){

float array[5] = {12,32,56,67,54};

float min;
float max;

float *ptrMin;
float *ptrMax;

ptrMin = &min;
ptrMax = &max;

findMinMax(array, ptrMin, ptrMax);

printf("%f %f", *ptrMin, *ptrMax);

system("pause");
return 0;
}

我使用函数 findMinMax 将两个值返回到我的主函数。

void findMinMax(float *array, float *ptrMin, float *ptrMax){
float ptrMinTemp;
float ptrMaxTemp;

*ptrMin = ptrMinTemp;
*ptrMax = ptrMaxTemp;

while(*array){
if(*array < ptrMinTemp){
ptrMinTemp = *array;
*ptrMin = ptrMinTemp;
}

if(*array > ptrMaxTemp){
ptrMaxTemp = *array;
*ptrMax = ptrMaxTemp;
}
array++;
}
}

在添加此评论之前,是的,我创建了原型(prototype)函数并且还包含了正确的头文件。

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

void findMinMax(float *array, float *ptrMin, float *ptrMax);

在控制台中我得到以下信息:

0.000000 67.000000Press any key to continue . . .

最佳答案

while(*array)

本质上是错误的,这意味着“当 *array 为零时停止”,除非您将 0 放在数组末尾以将其标记为数组末尾,否则您无法执行此操作。

因此您必须发送数组的大小:

// ...
findMinMax(array, ptrMin, ptrMax, sizeof array / sizeof *array);

void findMinMax(float *array, float *ptrMin, float *ptrMax, size_t size)
// ...
for (size_t i = 0; i < size; i++) // use array[i] not *array in that loop
<小时/>

另外,您没有初始化 minmax:

float min = array[0];
float max = array[0];

关于c - 指针无法正确打印值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48038129/

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