首页 > 编程语言 > 详细

指针和数组的定义与声明

时间:2015-11-23 06:24:14      阅读:300      评论:0      收藏:0      [点我收藏+]

情况一:定义为数组,声明为指针

文件1中定义如下:

char array[100];

文件2声明如下:

extern char *array;

分析:假如array[100]中存的是"abcde..........";

extern char *array;编译器认为array是一个指针变量为其分配4个字节。

然而,array[100]中的存储方式为:

0X410X420X430X44

则*array取四个字节为0X41424344(没有考虑大端小端),这个地址为谁的地址,鬼知道。所以这样声明是错误的。

情况二:定义为指针,声明为数组

文件1定义如下:

char *p = "abcdef";

文件2声明:

extern char p[];

分析:这个就就很好分析了,假如p保存常量字符串的地址,假设为0XFF00FF00。

0XFF0X000XFF0X00

则文件2中的p[0] ==0XFF,p[1] == 0X00,p[2] == 00XFF,p[3] == 0x00。很明显错误;

下面是VS2010下的测试;

情况1:

技术分享

技术分享

技术分享

情况2:

技术分享

技术分享

技术分享


指针和数组的定义与声明

原文:http://zhaoxiaohu.blog.51cto.com/10778115/1715799

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!