c - 如何正确尊重作为地址传递给函数的 char** 指针?
问题描述
我正在编写一个使用 char ** 设置多维数组的程序。然后我将 char ** 的地址传递给另一个函数来使用。
** 指针通过地址传递给另一个函数后,如何正确地尊重它们?
c字符串的ERROR数组
分段错误
int test(char *** strings){
puts(*strings[0]);
puts(*strings[1]);
return 1;
}
int main(void) {
char arr[][25] =
{ "array of c string",
"is fun to use",
"make sure to properly",
"tell the array size"
};
char ** strings = (char**)malloc(2 * sizeof(char*));
strings[0] = (char*)malloc(25 * sizeof(char));
strcpy(strings[0], arr[0]);
strings[1] = (char*)malloc(25 * sizeof(char));
strcpy(strings[1], arr[1]);
test(&strings);
return 1;
}
*Malloc 被强制转换,以防有人将其插入 C++ 操场
解决方案
这有效:
int test(char *** strings){
puts((*strings)[0]);
puts((*strings)[1]);
return 1;
}
因为[]
比绑定更紧密*
,您需要先取消引用。请参阅https://en.cppreference.com/w/c/language/operator_precedence
推荐阅读
- netlogo - 有什么方法可以加快 Netlogo 的“校验码”功能?
- javascript - 如何为两个不同的 vue 实例使用两个不同的 vuetify 版本
- python-3.x - 如何每个循环只创建一个文件?
- python - 人脸识别未安装在 python 3.7 中
- r - R合并具有相同行名和列名的行
- php - PHP - $_POST SQL 查询未使用正确值更新列
- javascript - 单击单选按钮隐藏另一个组件
- python - (python)如何在包含整数的列表中找到连续数字集
- swift - 检查 collectionViewCell 是否在 collectionView 上显示超过 50%
- docker - 如何在 Dockerfile 本身中设置断点?