一个指针所指向的地址的值可以赋值给另一个指针所指向的地址吗?我如何解决 C 中的这个最小-最大问题

问题描述 投票:0回答:1

我有两个问题。

我的代码:

#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;
}

首先:通过这段代码,我想找到数组中的 largestsmallest 元素并将它们打印在屏幕上。程序正确地找到了最大的元素并打印它,但是当我想找到最小的元素时,它每次都会给我一个0常数值(即使我更改循环变量,结果仍然是相同的)。我该如何解决这个问题? 第二:例如;

*minimum = *(array + i);

是否可以将一个指针所指向的地址处的值分配给另一个指针所指向的地址处的值,如本例所示(使用正确定义的指针)?如果这是可能的,这个例子是否正确(就编写语法和工作而言)?

作为查找数组中最小元素的另一种方法,我尝试将其分配给另一个变量,

就像我对最大元素所做的那样

,然后使用 min 将其分配给主函数中的 *minimum

 变量
我的函数中的指针,但结果仍然是 0。我正在等待学习如何解决这个问题并得到我的第二个问题的明确答案。
    

c pointers syntax function-pointers
1个回答
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]; } } }

    您访问数组超出其范围 - 因此它不起作用。
  1. array[i] === *(array + i)

    
    

© www.soinside.com 2019 - 2024. All rights reserved.