指针和数组的区别——SUN面试题
来源:互联网 发布:播音软件破解版 编辑:程序博客网 时间:2024/04/28 19:44
如果能弄明白这个面试题,基本可以认为明白了指针和数组名的区别 另外转帖一个解释,还算凑合吧,我自己懒得写了,想知道详细的自己看《C专家编程》 ================ /* file1.c */ char buff[128]; /* file2.c */ extern char *buff; /* Notice: extern char buff[] */ int main() { *buff = 'a'; return 0; } 结果如下: $ gcc file1.c -c $ gcc file2.c -c $ gcc file1.o file2.o -o ff $ ./ff Segmentation Fault 问,为何有这个结果? 我试了一下,在file2中换成extern char buff[]就可以, 但不知道为什么了.. 论坛上的一种解释: --------------------- 数组和指针本来是完全不同的东西 数组里面放的是数组元素的值, 指针放的是一个地址 编译器为了处理起来方便,经常把数组当成指针处理 比如: int buf[5]={0}; int *p = buf; 这个时候编译器知道buf是一个数组 所以会把数组的地址而不是它的内容传给p指针 但是如果数组是在另一个编译单元(编译器对每个编译单元的处理是独立的) 指针p它不知道自己指向的是一个数组 链接的时候也没有buf是一个数组的信息 所以最后链接的时候, p链接的是buf的内容而不是它的地址 我在linux下的实验结果 --------------------------------- 在file1.c里边 char buf[ 128 ] = {0x10, 0x20, 0x30, 0x40}; 在file2.c里边 extern int buf // 注意这里强制把file1.c里边的char buf转换成整形 int main() { printf("buf = %x/n", buf ); } 则输出的结果就是 buf = 40302010
- 指针和数组的区别——SUN面试题
- 面试题之数组指针和指针数组的区别
- 剑指offer面试题2.3.1——数组和指针的区别
- 2017032001面试题之数组指针和指针数组的区别
- 数组和指针的面试题
- 腾讯面试题——指向数组的指针
- 从一道面试题看指针与数组的区别
- 从一道面试题看指针与数组的区别
- 从一道面试题看指针与数组的区别
- 从一道面试题看指针与数组的区别
- 笔试面试题9--指针和引用的区别
- 数组指针面试题
- sun和IBM面试题
- 关于数组指针的一道面试题
- 面试题31—连续子数组的最大和
- C语言面试题——指针与数组
- 面试题——Cookie和Session的区别
- 面试题——存储过程和函数的区别
- 子网划分实例
- 什么是 SOA?
- javafx+webservice构建web2.0时代富客户端web应用
- 很全的电脑专业术语中英文对照
- Comsenz XConvert 1.2.0 下载
- 指针和数组的区别——SUN面试题
- 《JRuby实战》译序
- 开始
- 开始
- 开始
- 毕业设计翻译的文章-系统范围内挂钩本地API控制进程的创建
- datalist分页效果问题
- GPRS Type
- 用C++实现插件体系结构z