返回信息流关于数组和指针的问题,估计各位都看得太多了,现在有一个问题请教一下:
在一个文件里声明的char array[] = "abcde"
在另外一个文件里使用extern char* array; // !这里声明的是指针
那么引用相应偏移量的元素是会出错array[2]会有运行期错误;
但是如果在一个文件里进行同样的声明,char array[]="abcde";
然后声明另外一个指针char* ptr = array;
这样通过ptr在引用相应因素ptr[2]则不会有问题
同样的指针声明, 编译器在哪里有解释不一样的地方么?
不好意思,水平太菜,望不吝赐教
这是一条镜像帖。来源:北邮人论坛 / cpp / #16830同步于 2008/11/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
关于数组和指针
Dual
2008/11/28镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
肯定有问题
声明中使用数组和指针 不是一个概念
也就是你申明的是数组,那么在其他文件中用extern申明的话,一定只能是数组不能是指针
这个和编译过程有关,具体你可以看看《c专家编程》
后面的我想说 在赋值中 数组和指针可以替换
具体你还是看那本书吧
这本书把数组和指针的却别讲得很仔细,尤其是画的那几个小图……
【 在 eelb 的大作中提到: 】
: 肯定有问题
: 声明中使用数组和指针 不是一个概念
: 也就是你申明的是数组,那么在其他文件中用extern申明的话,一定只能是数组不能是指针
: ...................
好的
谢谢各位
我只是觉得同样都是当作指针来处理的话,编译器的解释应该不会有太大的差异而已,话说回来,凡事可能都有例外吧。
不知道是语言规范集这样规定的还是编译器的不同处理结果