我想将一个字符字符串数组(C风格的字符串)传递给一个函数。但是,我不想在函数中限制每个字符串的最大长度,也不想动态分配数组。这是我首先编写的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void fun(char *s[])
{
printf("Entering Fun\n");
printf("s[1]=%s\n",(char *)s[1]);
}
int main(void)
{
char myStrings[2][12];
strcpy(myStrings[0],"7/2/2010");
strcpy(myStrings[1],"hello");
fun(myStrings);
return(0);
}
当我运行时,出现了段错误,并且编译器发出以下警告:
stackov.c: 在函数 ‘main’ 中:
stackov.c:17: 警告:从不兼容的指针类型传递参数 1 给函数 ‘fun’
stackov.c:5: 注意:期望类型 ‘char **’,但参数的类型为 ‘char (*)[12]’
然而,当我将 main() 改为以下代码时,它可以正常工作:
int main(void)
{
char myStrings[2][12];
char *newStrings[2];
strcpy(myStrings[0],"7/2/2010");
strcpy(myStrings[1],"hello");
newStrings[0]=myStrings[0];
newStrings[1]=myStrings[1];
fun(newStrings);
return(0);
}
当将array[2][12]传递给函数时,它与字符指针数组相同吗?