定义为指针,声明为数组

文件1中 定义指针 文件2 声明为数组

char *str =”abcd”;//在文件1中
extern char str[];//在文件2中
在文件1中str这个变量里面存储了一个字符串的首地址假设是0x12345678 ,这个地址里面存了a ,后面的地址存放了b 依次类推
在文件2中使用的时候会出现的问题:
char c = str[0]; //本来我们会觉得变量c的值应该是a,事实上是0x78
char c = str[1]; //本来我们会觉得变量c的值应该是b,事实上是 0x56
char c = str[2]; //本来我们会觉得变量c的值应该是c,事实上是 0x34
char c = str[3]; //本来我们会觉得变量c的值应该是c,事实上是 0x12

原因在于指针里面存的是地址,通过这个地址找到我们想要的字符串,而编译器把这个指针变量str 里面存的地址0x12345678 当作了数组str里面的值 str[0]就会是0x78
为了便于对比以16进制来看是0x78,事实上调试的时候会显示这个值代表的字符,看内存的时候,可以选择10进制或者16进制显示

故 在一个文件中定义为指针 在另一个文件中也要声明为指针
但是使用的时候可以用 下标的形式访问,比如str[0] 但是前提是声明为指针。
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值