通过传参的方式返回char**
时间: 2024-10-16 09:14:03 浏览: 24
在C语言中,通过函数参数的形式传递一个指向字符数组的指针(`char **`),意味着你在函数内可以操作这个数组,并且可以在函数结束时改变它,或者返回一个新的指针给调用者。这是一种将数据结构作为参数传递的方式,常用于需要共享或修改输入数据的情况。
例如,你可以有一个函数接收一个字符串数组的长度,然后创建一个新的字符串数组并返回其地址:
```c
char **create_new_array(int num) {
char **new_array = malloc(num * sizeof(char *));
// 对于每个元素,分配空间并设置默认值
for (int i = 0; i < num; i++) {
new_array[i] = malloc(50); // 假设每个字符串最多50字节
strcpy(new_array[i], "New String " + i);
}
// 返回新数组的地址
return new_array;
}
// 调用示例
void print_arrays(char **arrays) {
for (int i = 0; arrays[i] != NULL; i++) {
printf("%s\n", arrays[i]);
}
}
int main() {
int len = 3;
char **old_array = create_new_array(len);
print_arrays(old_array); // 打印新数组内容
// 现在可以对 old_array 进行进一步操作或传递给其他函数
// ...
// 记得释放内存
for (int i = 0; i < len; i++) {
free(old_array[i]);
}
free(old_array);
return 0;
}
```
在这个例子中,`create_new_array`函数返回的是一个指向`char`数组的新指针,而`print_arrays`函数则接受这个指针来遍历并显示数组内容。
阅读全文