gpt4 book ai didi

c - 将字符串数组传递给 C 中的函数

转载 作者:太空宇宙 更新时间:2023-11-04 05:42:01 26 4
gpt4 key购买 nike

我刚学 C,有人能解释一下为什么下面的代码在打印数组的第一个元素后会产生段错误吗?

工作代码是什么样的?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define ELEMENTS 8

void make(char ***array) {

*array = malloc(ELEMENTS * sizeof(char *));


(*array)[0] = "test0";
(*array)[1] = "test1";
(*array)[2] = "test2";
(*array)[3] = "test3";
(*array)[4] = "test4";
(*array)[5] = "test5";
(*array)[6] = "test6";
(*array)[7] = "test7";
(*array)[8] = "test8";

}

int main(int argc, char **argv)
{
char **array;
make(&array);

int i;
for (i = 0; i < ELEMENTS; ++i) {
printf("%s\n", array[i]);
free(array[i]);
}
free(array);
return 0;

最佳答案

  1. 您的数组大小是 8,但您访问的索引是 8,它超出了数组的末尾。不懂就数元素个数...

  2. 您对分配的字符串常量调用free。不要这样做。只有freemalloc,它只是array,而不是array[0]array[ 8].

关于c - 将字符串数组传递给 C 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15835300/

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