arrays - 当通过函数作为参数传递数组时,数组是否索引为零?C 编程
问题描述
当它们通过函数作为参数传递时,数组零索引吗?还是 C 只是将数组 A 的内存复制到两个不同的数组中?
当我通过另一个函数传递同一个数组时,我永远不需要“重置”数组的原始位置?
static const int A[3] = {1, 5, 8};
void fun(const int B[]){
printf("val = %d\n", *B);
B++;
printf("val = %d\n", *B);
}
int main() {
fun(A);
fun(A);
return 0;
}
输出:
val = 1
val = 5
val = 1
val = 5
例如,当我不使用时const
,我可以看到它们共享相同的内存,但那只是在我不使用时const
。
static int A[3] = {1, 5, 8};
void fun(int B[]){
printf("val = %d\n", *B);
*B = 10;
printf("val = %d\n", *B);
}
int main() {
fun(A);
fun(A);
return 0;
}
输出:
val = 1
val = 10
val = 10
val = 10
解决方案
您修改本地指针。为什么是指针?因为数组作为指针传递。要修改原始指针,您需要将指针传递给指针
int A[] = {1, 5, 8, 10};
void fun(const int **B){
printf("val = %d\n", **B);
(*B)++;
printf("val = %d\n", **B);
}
int main()
{
int *C = A;
fun(&C);
fun(&C);
return 0;
}
推荐阅读
- html - Flex 框在应该是行时呈现为列
- typescript - TypeScript 中的字典类型
- jquery - Ajax 表单提交两次或一次但缺少最后一个值没有提交按钮
- android - 生成 GDAL 库的 64 位 .so 文件
- java - 如何将通话记录保存在手机存储中?例如作为备份
- python - 这是关于python中列表的问题。我们可以连接两个列表吗
- textures - 将文件从 .obj 转换为 .usdz 时映射多个纹理
- json - 在基于 REST 的服务中序列化空属性的行业标准是什么?
- asp.net - 如何实现步骤进度条,如 Flipkart 交付报告栏
- python - 检查上一行值以将数据从一列复制到另一列