首页 > 解决方案 > 在 C 程序中获取指针问题

问题描述

正如我们所知,数组仅在 C 中通过指针传递,那么swap1(arr[i],arr[j])下面意味着两个指针将传递给函数,swap1()那么为什么swap1(arr[i],arr[j])会给我错误?根据swap1()应该传递两个指针的函数原型,我正在传递它。

另一方面,当我实际传递地址swap1(&arr[i],&arr[j])时,它工作正常,这是显而易见的。

void swap1(int *a,int *b){
   int temp = *a;
   *a = *b;
   *b = temp;
}
void bubble(int arr[], int i, int n)
{
    for(int j=i+1;j<n;j++){
        if(arr[i]>arr[j])
        swap1(arr[i],arr[j]);
    }
}

标签: carrayspointerssubscript-operator

解决方案


bubble函数中,变量arr是一个指针(类型int *)。这意味着arr[i](对于 any i不是指针,而是int

当您将这些int值传递给swap编译器时应该抱怨它,这是正确的,因为该swap函数需要指针(再次是 type int *)。

要获得指向您的指针,arr[i]您需要使用地址运算符&,如&arr[i]

swap1(&arr[i], &arr[j]);

推荐阅读