c - 在 C 中将数组作为参数传递时出现意外结果?
问题描述
我正在尝试习惯使用指针,但是在将它们作为参数传递给函数时我有点挣扎。我读到数组是通过引用函数传递的,因此这样的代码可以更改数组元素(假设给出了一个有效的数组):
void f(int *b)
{
b[2]=1;
}
in main:
f(validArray);
然而,即使我们传递了指针,这似乎也不起作用;
void foo(int *b)
{
b=b+2;
}
in main:
f(validArray);
不会进一步移动指针。这是为什么?
解决方案
b[2]=1;
本质上是
*(b+2) = 1;
这意味着它改变了地址中的数据(b+2)
b=b+2;
这意味着您要b
指向2
b 之前指向的元素旁边的元素,这不会影响指针地址中的数据b
,因此不会更改数组中的数据validArray
推荐阅读
- powershell - 如何在嵌套循环中使用 $_?
- python - 这是在最新版本的 PyTorch(TensorFlow 到 PyTorch 转换)中计算内核的最佳方法吗?
- c# - C#从自动完成文本框中获取所选项目的数据库ID
- php - 给定字符生成器和长度,如何生成所有可能字符串的列表?
- javascript - 从像素数组在网页上渲染图像
- c++ - 通过 C++ 中的指针指示对象的方法
- sql - SQL 子查询未获取正确的数据
- php - mysqli INSERT失败时catch不报错。
- android - 未在 LiveData 收到数据更改
- javascript - PWA 独立,键盘隐藏后的死区