[英]C - How to pass an array of strings to another function by reference?
这是我的代码:
void doSomething(){
char arr[5][10];
arr[1] = "Bob";
arr[2] = "Steve";
arr[3] = "Tim";
arr[4] = "Ruth";
arr[5] = "Heather";
init(arr);
void init(char *array){
int i;
newArr[5][10];
for(i=0; i<5; i++){
newArr[i] = *(array + i);
}
}
我不断收到错误消息:
警告:从不兼容的指针类型传递'init'的参数1 [默认启用]注意:预期为'char ',但参数类型为'char( )[10]'
1)在C语言中没有字符数组分配使用strcpy()
并且数组从0开始而不是1:
#include <string.h>
void doSomething(){
char arr[5][10];
strcpy(arr[0], "Bob");
strcpy(arr[1], "Steve");
strcpy(arr[2], "Tim");
strcpy(arr[3], "Ruth");
strcpy(arr[4], "Heather");
init(arr);
}
2) init()
获取指向char数组的指针; 未声明newArr[][]
,添加char
。 在源代码的开头添加一个用于init()
的声明。 最后但并非最不重要的一点:再次将赋值替换为strcpy()
。
void init(char (*array)[10]);
void doSomething() {...}
void init(char (*array)[10]){
int i;
char newArr[5][10];
for(i=0; i<5; i++){
strcpy(newArr[i], array[i]);
}
}
最后,这可能很无聊,但请查看https://stackoverflow.com/tags/c/info和C FAQ并挑选一本书。 这将比我能为您提供更好,更长久的服务。
那不是错误。 这是一个警告。 如您所见,在doSomething中的arr
是一个双精度数组(可以使用双精度指针表示),但是在初始化中,您仅采用了单个指针。 将其更改为双指针**array
或array[][]*
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.