文件1中 定义指针 文件2 声明为数组
char *str =”abcd”;//在文件1中
extern char str[];//在文件2中
在文件1中str这个变量里面存储了一个字符串的首地址假设是0x12345678 ,这个地址里面存了a ,后面的地址存放了b 依次类推
在文件2中使用的时候会出现的问题:
char c = str[0]; //本来我们会觉得变量c的值应该是a,事实上是0x78
char c = str[1]; //本来我们会觉得变量c的值应该是b,事实上是 0x56
char c = str[2]; //本来我们会觉得变量c的值应该是c,事实上是 0x34
char c = str[3]; //本来我们会觉得变量c的值应该是c,事实上是 0x12
原因在于指针里面存的是地址,通过这个地址找到我们想要的字符串,而编译器把这个指针变量str 里面存的地址0x12345678 当作了数组str里面的值 str[0]就会是0x78
为了便于对比以16进制来看是0x78,事实上调试的时候会显示这个值代表的字符,看内存的时候,可以选择10进制或者16进制显示
故 在一个文件中定义为指针 在另一个文件中也要声明为指针
但是使用的时候可以用 下标的形式访问,比如str[0] 但是前提是声明为指针。