OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4547|回复: 5

关于数组的问题

[复制链接]

71

主题

183

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2013-1-29
在线时间
1 小时
发表于 2013-6-5 11:21:37 | 显示全部楼层 |阅读模式
我定义了一个数组  是这样的 u8 temp[]={"ASDFG\r\n"};
 然后这样运用
u8 * p=temp;
Data=strlen((consr char *)temp);

这样运用的话 程序正常 不会出错

但是如果 我这样定义    u8 temp[]={"ASDFG"};
然后如下运用
u8 * p=temp;
Data=strlen((consr char *)temp);
p[Data]=0x0d;
p[Data+1]=0x0a;
p[Data+2]=0x00;
但是这样用的话 程序出现异常  写入U盘中的的数据出现了乱码现象 可是 我觉得 这两种写法应该是等效的啊

是不是这样写就造成数组溢出了 在&p[Data+1]地址处 程序把改地址分配给了其他变量  因为数组并没有申请这个地址
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2013-6-5 12:12:16 | 显示全部楼层
p[Data] 已经指向 外面去了!!

*(p+0)
回复 支持 反对

使用道具 举报

71

主题

183

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2013-1-29
在线时间
1 小时
 楼主| 发表于 2013-6-5 13:55:14 | 显示全部楼层
回复【2楼】aleda303:
---------------------------------
恩 是的  你的意思也就是说 不能在数组以外的空间 人为的给某个地址赋值 对吧
回复 支持 反对

使用道具 举报

30

主题

705

帖子

1

精华

新手上路

积分
21
金钱
21
注册时间
2013-3-14
在线时间
52 小时
发表于 2013-6-5 14:29:46 | 显示全部楼层
指针出界了啊。Data=strlen((consr char *)temp);
这里的DATA是总长度。如果用
p[Data-1]=0x0d;
p[Data-2]=0x0a;
p[Data-3]=0x00;

这样还差不多。
原子哥是不是又要出黑科技了呀。^_^...
回复 支持 反对

使用道具 举报

71

主题

183

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2013-1-29
在线时间
1 小时
 楼主| 发表于 2013-6-5 20:15:08 | 显示全部楼层
回复【4楼】fanghuiopenedv:
---------------------------------
回复 支持 反对

使用道具 举报

5

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2013-6-5
在线时间
0 小时
发表于 2013-6-6 09:44:41 | 显示全部楼层
回复【5楼】langwanglx:
---------------------------------
数组越界了,你可以把 u8 temp[]={"ASDFG"}改为 u8 temp[10]={"ASDFG"};就可以了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-18 22:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表