数组传递给指针,报错,请高手分析一下,tks

kikop_freedom 2012-06-03 07:49:20
分析这是什么错:

出错记录:
---------------------------
mypointer_lference.exe - 应用程序错误
---------------------------
"0x6b207369" 指令引用的 "0x6b207369" 内存。该内存不能为 "read"。
要终止程序,请单击“确定”。
要调试程序,请单击“取消”。
---------------------------
确定 取消
---------------------------

void set_arrayvalue(unsigned char *tmp)
{
strcpy((char *)tmp,"my name is kikop");
}

void testupdate()
{

//unsigned char myarray[]={0}; //全局变量,在全局数据区,在局部变量中给值是可以的,OK
unsigned char myarray[]={0}; //注意,这里数组的长度要足够大,原因目前还不知道

set_arrayvalue(myarray);
printf("your name:%s\n",myarray);
}
...全文
105 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq120848369 2012-06-03
  • 打赏
  • 举报
回复
内存只有1字节.
N_Sev7 2012-06-03
  • 打赏
  • 举报
回复
经过VC++6.0调试可以发现,printf函数实际返回的值为27字符,你那样定义数组,调试的话会发现只有一个myarray[0]有值,虽然后面的值都被加在数组后面,能成功输出你想输出的字符串,但是除了第一个值,后面的访问都是越界的
jixingzhong 2012-06-03
  • 打赏
  • 举报
回复
c99 里面有变长数组、灵活长度数组两张方式,可以参考一下。

不过对于这样的需求,直接使用指针动态分配内存不是挺好的么。
ouyh12345 2012-06-03
  • 打赏
  • 举报
回复
在参数里传数组的长度,函数里再判断一下
W170532934 2012-06-03
  • 打赏
  • 举报
回复
unsigned char myarray[]={0};这样定义的话长度只有1.
jixingzhong 2012-06-03
  • 打赏
  • 举报
回复
unsigned char myarray[]={0}; //注意,这里数组的长度要足够大,原因目前还不知道

这样的定义方式,定义的数组长度是1
ouyh12345 2012-06-03
  • 打赏
  • 举报
回复
应该是越界了

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧