现在,据我了解,extern声明中的name[]告诉编译器它的定义在其他地方(在我的程序中,我已经在我使用它的部分下面定义了它)。但是为什么 and 会有不同的strlen()结果sizeof?strlen()工作正常,但sizeof()我得到错误:
invalid application of 'sizeof' to incomplete type 'char[]' |
这是我的程序:
#include<stdio.h>
#include<string.h>
extern char name[];
int main()
{
printf("%d,%d",strlen(name),sizeof(name));
}
char name[]="Bryan";
//char name[6]="Bryan"; //Neither of these make sizeof work
我试图根据我对extern关键字的理解来推理它,但我遇到了瓶颈。所以请给出你的答案。