c - C中数组的问题

标签 c arrays debugging pointers

我是一名编程专业的学生,​​我不明白这段代码有什么问题:

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

    void merge(int a[], int low, int high, int mid){
        int i, j, k, c[50];
        i=low;
        j=mid+1;
        k=low;
        while((i<=mid)&&(j<=high)){
            if(a[i]<a[j]){
                c[k]=a[i];
                k++;
                i++;
            } //end if
        else{
            c[k]=a[j];
            k++;
            j++;
            } //end else
        } //end while
        while(i<=mid){
            c[k]=a[i];
            k++;
            i++;
        } //end while
        while(j<=high){
            c[k]=a[j];
            k++;
            j++;
        } //end while
        for(i=low;i<k;i++){
            a[i]=c[i];
        } //end for
    } //end merge()

    int mergesort(int a[], int low, int high){
        int mid;
        if(low<high){
            mid=(low+high)/2;
            mergesort(a,low,mid);
            mergesort(a,mid+1,high);
            merge(a,low,high,mid);
        } //end if
        return(0);
    } //end mergesort()

    int main(){
        int i, n, arr[100];
        do{
            scanf("%d", &n);
            if(n == 0)
                break;
            else{
                for(i = 0; i < n; i++){
                    scanf("%d", &arr[i]);
                    mergesort(arr, 0, n);
                } //end for
            } //end else
            for(i = 0; i < n; i++)
                printf("%d\n", &arr[i]);
        }while(n != 0); //end while
    } // end main()

终端显示以下错误

ej.c: In function ‘main’:
ej.c:60:5: warning: format ‘%d’ expects type ‘int’, but argument 2 has type ‘int *’

这个程序的目的是显示一个排序的数组。

最佳答案

这里:

 printf("%d\n", &arr[i]);

应该是

 printf("%d\n", arr[i]);

因为你想打印数组 arr[i] 的实际元素,而不是它的地址 &arr[i]


注意 scanfprintf 之间的区别。在 scanf 中,您应该提供地址 ( explanation, why ),而在 printf 中,您应该提供实际值。

关于c - C中数组的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7438125/

相关文章:

c - 我怎么能模拟 void 类型的函数?

c - 如何在 IMAP c-client 库中支持 OAUth

c++ - 如何在 gdb 中打印长字符串的完整值?

c - 将 float 传递给 printf 是未定义的行为吗?

javascript - 引用错误 : array is not defined

arrays - 如何像在 Python 中一样在 Julia 中拆分数组?

c++ - 使用 '='运算符在C++中使两个数组相等

visual-studio - 是否有任何 Visual Studio 扩展使 Quick Watch 对话框更智能?

javascript - 确定 Firebug 的 console.log() 是否在页面上的任何位置被调用

c - 结构体初始化-C