码迷,mamicode.com
首页 > 编程语言 > 详细

指针和数组的定义与声明

时间:2015-11-23 06:25:52      阅读:160      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!