指针和数组的定义与声明

简介:

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

文件1中定义如下:

char array[100];

文件2声明如下:

extern char *array;

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

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

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

0X41 0X42 0X43 0X44

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

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

文件1定义如下:

char *p = "abcdef";

文件2声明:

extern char p[];

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

0XFF 0X00 0XFF 0X00

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

下面是VS2010下的测试;

情况1:

wKioL1ZR4jjSHA7jAAAFBo1h7Vc885.gif

wKiom1ZR4eDxscReAAAEeBp-WKA384.gif

wKioL1ZR4jmjTJUPAAAIE_f5l6Q435.gif

情况2:

wKiom1ZR4eHRVINVAAAE-ij9y9w161.gif

wKioL1ZR4jvipbJMAAAEnnv2JY4105.gif

wKiom1ZR4eOwxgpoAAAOV0GnFX0996.gif



本文转自 8yi少女的夢 51CTO博客,原文链接:http://blog.51cto.com/zhaoxiaohu/1715799,如需转载请自行联系原作者

相关文章
|
1月前
|
C语言
指向结构体数组的指针
指向结构体数组的指针
13 2
|
1月前
|
存储 算法 C语言
通过指针引用数组元素
通过指针引用数组元素
20 0
|
1月前
|
C语言 C++
数组元素的指针
数组元素的指针
10 0
|
1月前
|
存储 C++
使用字符指针变量和字符数组的比较
使用字符指针变量和字符数组的比较
10 0
|
1月前
|
存储 C语言 C++
c语言从入门到实战——数组指针与函数指针
数组指针和函数指针都是指针类型,但是它们指向不同的数据类型。 数组指针:数组指针指向的是数组类型。 函数指针:函数指针指向的是函数类型。 数组指针和函数指针是C语言中的两种重要指针类型。数组指针指向一个数组,可以用来访问和修改数组中的元素;而函数指针则指向一个函数,可以用来调用该函数。两者在语法和用法上有所不同,需要仔细区分。正确理解和使用它们可以提高程序的效率和可维护性。
33 0
C4.
|
1月前
|
算法 安全 程序员
C语言中如何通过指针引用数组
C语言中如何通过指针引用数组
C4.
20 0
C4.
|
1月前
|
存储 算法 C语言
C语言的指针数组与多重数组
C语言的指针数组与多重数组
C4.
22 0
|
24天前
|
存储 程序员 C++
使用字符指针变量和字符数组的比较
使用字符指针变量和字符数组的比较
14 1
|
24天前
|
存储 安全 Java
防止数组元素的指针被修改
防止数组元素的指针被修改
14 1
|
1月前
|
存储 Serverless 编译器
怎样定义和使用指向函数的指针变量
怎样定义和使用指向函数的指针变量
8 0

热门文章

最新文章