c语言如何传递字符串数组
时间: 2024-09-17 19:05:38 浏览: 40
C语言中二维数组作为函数参数来传递的三种方法
5星 · 资源好评率100%
在 C 语言中,传递字符串数组给函数时,有几种常见的方法:
1. **通过指针传递**:
- 使用 `char*` 类型的指针,声明函数参数为 `char str[]` 或 `char *str`,然后在函数内部可以直接修改指针指向的内存内容。例如:
```c
void printArray(char arr[], int size); // 假设 arr 是字符串数组名
void printArray(char* str) {
for (int i = 0; i < strlen(str); i++) {
printf("%c", str[i]);
}
printf("\n");
}
char myArray[5] = {"Hello", "World"}; // 字符串数组
printArray(myArray);
```
2. **通过引用传递**(尽管 C 语言本身并没有引用的概念,但这是一种习惯性的描述):
如果需要在函数内部改变原数组的内容,可以使用类似数组指针的方式,如:
```c
void modifyArray(char(*arr)[5], int size); // 假设 arr 现实了数组的首地址
void modifyArray(char (*arr)[5]) {
for (int i = 0; i < size; i++) {
arr[i][0] = 'H'; // 修改每个字符串的第一个字符
}
}
char myArray[5] = {"Hello", "World"};
modifyArray(&myArray);
```
3. **通过动态分配**(如果需要在函数内创建新的字符串数组):
```c
void appendToArray(char** array, char newStr[], int* size) {
*array = realloc(*array, (*size + 1) * sizeof(char*)); // 动态扩容
(*array)[*size] = newStr;
(*size)++;
}
char* myArray = malloc(5 * sizeof(char*)); // 初始大小
myArray[0] = strdup("Original"); // 初始化第一个元素
appendToArray(&myArray, "New String", &size);
```
阅读全文