c - 如何将动态数组以及索引位置传递给 C 中的函数?
问题描述
我需要此功能将动态分配的数组和 idx 都传递给函数并为其赋值。当我尝试分配代码中提到的值 2 时,会发生段错误。这有什么问题?我该如何解决?
#include <stdio.h>
#include <stdlib.h>
void fucn(int *int_ptr, int **arr_ptr)
{
*arr_ptr[*int_ptr] = 1;
(*int_ptr)++;
//*arr_ptr = *arr_ptr + 1;
*arr_ptr[*int_ptr] = 2;
}
int main(int argc, char const *argv[])
{
int *array = calloc(4, sizeof(int));
int i = 0;
fucn(&i, &array);
printf("%d%d", array[0], array[1]);
free(array);
return 0;
}
解决方案
这里的问题是运算符优先级之一,*arr_ptr[i]
不等同于你(*arr_ptr)[i]
在这里真正想要的,尽管直接传递给你的函数会更好array
,即让它将指针int
作为第二个参数,没有需要额外的间接级别。
所以你应该有:
void func(int *int_ptr, int **arr_ptr)
{
(*arr_ptr)[*int_ptr] = 1;
(*int_ptr)++;
(*arr_ptr)[*int_ptr] = 2;
}
或者:
void func(int *int_ptr, int *arr_ptr)
{
arr_ptr[*int_ptr] = 1;
(*int_ptr)++;
arr_ptr[*int_ptr] = 2;
}
推荐阅读
- hyperledger-fabric - 链码路径不存在
- php - 理解范围解析运算符在 PHP 语言中的定义
- python - 如何正确使用 djangorestframworkjwt
- c# - 像扩展名为 .csproj 的项目文件可以有 XML 以外的其他格式吗?
- python - 为什么我的 Python 返回一个随机的无效语法错误?
- java - 如何为 JLabel 创建快捷键?
- html - 如何在一个固定 div 上滚动多个 div?
- vb.net - vb.net - 在 Richtextbox 中更改 tab keydown 的行为(如果 e.KeyCode = Keys.Tab Then...)
- javascript - JavaScript。检测何时从另一个 js 脚本加载 html 元素
- reactjs - react-native 编译后是否在android中创建对应的androidactivity