| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2213 人关注过本帖
标题:定义的字符串变量莫名奇妙的地改变了!【已解决,指针越界】
取消只看楼主 加入收藏
yang4055
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-8-18
收藏
 问题点数:0 回复次数:3 
定义的字符串变量莫名奇妙的地改变了!【已解决,指针越界】
最近编程时遇到一个问题,我在文件中定义了[bo]好多[/bo]类似以下的字符串变量:
char  STBLine1Array[]={0xAA,0x6E,0x0A,0x00,0x1A,0x00,0xC4,0xEA,0xA3,0xBA};
但在使用时这些字符串会[bo]自己改变[/bo],长度没变,但内容变了。这种情况经常会出现。别人说是可能是存放该变量的内存被改变了。请问高手这具体是什么原因,怎么解决?谢谢了!

[[it] 本帖最后由 yang4055 于 2008-10-15 14:34 编辑 [/it]]
搜索更多相关主题的帖子: 变量 定义 字符 
2008-10-07 10:44
yang4055
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-8-18
收藏
得分:0 
是这样的:
char  STBLine1Array[]={0xAA,0x6E,0x0A,0x00,0x1A,0x00,0xC4,0xEA,0xA3,0xBA};
这是要通过串口发到LCD的一个字符串,可以显示 “-> 年:”,然后调用函数
SIO_SendBytes(com, size, sendarray)来发送该串:
SIO_SendBytes(COM1, 10, STBLine1Array);//COM1是端口,10是长度,STBLine1Array是名字。
这个函数是硬件商提供的,已经做成库,没有细节。
在使用时经常会出现发送的数据不是自己想要的数据,通过printf输出,可以看到内容已经改变。
2008-10-07 11:04
yang4055
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-8-18
收藏
得分:0 
我试试,看看能不能解决问题!谢谢各位!
2008-10-07 12:39
yang4055
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-8-18
收藏
得分:0 
谢谢各位大虾,我的问题解决了,果然是指针越界的问题。问题是这样的:
#define RECODER 20;
char ElecAll[RECODER][100];

char (*PBASE)[100] = ElecAll;        
char (*PTOP)[100]  = ElecAll+RECODER;    
char (*PMOVE)[100] = ElecAll;
在存储数据时的最高上限因该是PTOP-1,而不是PTOP,结果我搞越界了,把内存搞乱了。
2008-10-15 11:27
快速回复:定义的字符串变量莫名奇妙的地改变了!【已解决,指针越界】
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017174 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved