gpt4 book ai didi

使用指针更改变量的值不起作用

转载 作者:行者123 更新时间:2023-11-30 14:42:13 24 4
gpt4 key购买 nike

基本上,我有一个名为 MinSubTab 的函数,它应该计算传递的数组的总和,并且还可以更改从函数内部第一个参数传递的值,而不使用 return。这是通过指针完成的。无论如何,我认为如果我只向您展示代码会更容易,所以这里是:

maintab.c

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include "tab.h"

int main(){
int *reftab;
int min;
reftab = (int *)malloc(sizeof(int) * NMAX);
InitTab(reftab,NMAX);
printf("\n Total: %d et min: %d", MinSumTab(&min, reftab, NMAX), min);
free(reftab);
return 0;
}

tab.c

void InitTab(int *tab, int size){
srand(time(NULL));
for (int i=0; i<size; i++){
*(tab+i) = rand() % 10;
}
}
int MinSumTab(int *min, int *tab, int size){
int total=0;
int minimum = NMAX;
int temp = *min;
for (int i=0; i<size; i++){
total += *(tab+i);
}
for (int i=0; i<size; i++){
if(*(tab+i)<minimum){
minimum = *(tab+i);
}
}
*min = minimum;
return total;
}

所以这里的预期结果是打印总和(它是)并且打印数组的最小值(它不是)。每次 min 变量等于 8 时,我不知道如何在该函数中实际更改 min 的值。

请帮忙,因为我的大脑已经没有理性思考的能力了,已经 1.5 小时了,还没有看到解决方案。谢谢

最佳答案

看起来像一个小错误:

你用NMAX初始化minimum,我假设它是8(数组的大小)。 99.9%的随机数会更大。因此选择 8 作为最小值。

您真正想要的是使用 RAND_MAX 对其进行初始化 - rand() 可以返回的最大值。

关于使用指针更改变量的值不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54497582/

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