将参数定义为
char * sentence[]
和
char sentence[]
调用函数后什么时候会得到同样的结果?
#include <stdio.h>
void function1(char * sentence[]) {
printf("%s", sentence);
}
void function2(char sentence[]) {
printf("%s", sentence);
}
int main(void)
{
function1("Hello, world!\n");
function2("Hello, world!\n");
return 0;
}
结论:
Hello, world! Hello, world!
隐式转换不兼容的指针类型的可能性,在一些 C 编译器中有效,没有明确的指示,在这里发挥了作用。
实际上,编译时会显示警告:
说参数的类型实际上并不对应字符串参数,因为 指向指针的指针与指向
char
的指针不同char
。使用第二个选项是正确的,或者,同样的,
char * sentence
在签名中使用 in。