gpt4 book ai didi

c - 将 C 字符串的可变长度数组作为函数参数传递

转载 作者:行者123 更新时间:2023-11-30 14:55:06 25 4
gpt4 key购买 nike

在我的主函数中,我声明一个由 C 字符串组成的可变长度数组,然后将其传递给名为 secondaryPass() 的函数

在 secondaryPass() 中,我运行一个循环来确定名为 dec_instruction 的字符串的内容,然后尝试将其添加到我的数组中。

int main(int argc, char *argv[]) {

/* Logic to decide num_commands */

char machine_instructions[num_commands][11];
secondPass(machine_instructions, num_commands);
}


secondPass(char **machine_instructions, int num_commands){
for(int i = 0; i < num_commands; ++i){
char dec_instruction[11];

/* Logic to decide contents of dec_instruction */

strcat(machine_instructions[i], dec_instruction);
}
}

抱歉,我无法发布代码的完整内容。这是一个类(class)项目,共享代码的规则非常严格。

无论如何,在第二次迭代时,当 i = 1 时,靠近末尾的 strcat() 行会抛出 EXC_BAD_ACCESS。 据我所知, dec_instruction 是一个有效的 c 字符串,就像任何其他字符串一样。是什么导致了我的错误?

最佳答案

参数 char **machine_instructions 并不表示 char[][11] 类型的二维数组,而是指向 char 指针的指针。这通常用作指向指针“数组”的指针,但它绝不是字符数组的数组。

因此,在您的代码中,machine_instructions[i] 将尝试取消引用指向 char 的指针,但您传递的内容由纯字符组成,而不是由指针值组成。因此BAD_EXCESS

使用char machine_instructions[][11]应该可以解决问题。

关于c - 将 C 字符串的可变长度数组作为函数参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46227051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com