c - 在 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]);
}
}
解决方案
在bubble
函数中,变量arr
是一个指针(类型int *
)。这意味着arr[i]
(对于 any i
)不是指针,而是int
值。
当您将这些int
值传递给swap
编译器时应该抱怨它,这是正确的,因为该swap
函数需要指针(再次是 type int *
)。
要获得指向您的指针,arr[i]
您需要使用地址运算符&
,如&arr[i]
:
swap1(&arr[i], &arr[j]);
推荐阅读
- node.js - 你可以在 Next.js 中使用模板吗?
- python - 字符串方法(python) - 对句子的字母进行排序
- python-3.x - 有没有办法使用可变格式验证用户输入?
- c# - 在窗口(WPF)中输出位图的最佳方式是什么?
- r - 如何在rgl中绘制圆锥的一部分?
- c# - 如何将参数传递给通用动作过滤器
- google-cloud-platform - 关于按硬件资源收取的 Cloud Run 费用:我是否需要为未充分使用的内存付费?
- python - 卡在虚拟环境中启动子shell
- python - 在 Python 中绘制多变量线性回归
- reactjs - 将 setState 调用到其原始数组后,如何使映射的输入文件重新呈现?