我有两个问题。
我的代码:
#include <stdio.h>
void arrayFonk(int *dizi, int size, int *minimum, int *maximum){
int i;
int b;
for(i = 0; i < size; i++){
if(*(dizi + i) > *(dizi + i + 1)){
b = *(dizi + i);
/* *minimum = *(dizi + i + 1); */
} else {
b = *(dizi + i + 1);
/**minimum = *(dizi + i);*/
}
}
*maximum = b;
int j;
int c;
for(j = 0; j < size; j++){
if(*(dizi + j) < *(dizi + j + 1)){
/* *minimum = *(dizi + j);*/
c = *(dizi + j);
} else {
/* *minimum = *(dizi + j + 1);*/
c = *(dizi + j + 1);
}
}
*minimum = c;
}
int main()
{
int a[] = {1, 2, 3, 4, 5};
int min, max;
arrayFonk(&a[0], 5, &min, &max);
printf("En büyük değer: %d\n", max);
printf("En küçük değer: %d\n", min);
return 0;
}
首先:通过这段代码,我想找到数组中的 largest 和 smallest 元素并将它们打印在屏幕上。程序正确地找到了最大的元素并打印它,但是当我想找到最小的元素时,它每次都会给我一个0的常数值(即使我更改循环变量,结果仍然是相同的)。我该如何解决这个问题? 第二:例如;
*minimum = *(array + i);
是否可以将一个指针所指向的地址处的值分配给另一个指针所指向的地址处的值,如本例所示(使用正确定义的指针)?如果这是可能的,这个例子是否正确(就编写语法和工作而言)?
作为查找数组中最小元素的另一种方法,我尝试将其分配给另一个变量,就像我对最大元素所做的那样,然后使用 min
将其分配给主函数中的 *minimum
变量我的函数中的指针,但结果仍然是 0。我正在等待学习如何解决这个问题并得到我的第二个问题的明确答案。
void arrayFonk(int *dizi, size_t size, int *minimum, int *maximum)
{
if(dizi)
{
*maximum = dizi[0];
*minimum = dizi[0];
for(size_t i = 1; i < size; i++)
{
if(dizi[i] > *maximum) *maximum = dizi[i];
if(dizi[i] < *minimum) *minimum = dizi[i];
}
}
}
array[i] === *(array + i)