数组传递给指针,报错,请高手分析一下,tks,该怎么解决
数组传递给指针,报错,请高手分析一下,tks
分析这是什么错:
出错记录:
---------------------------
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);
}
------解决方案--------------------
应该是越界了
------解决方案--------------------
unsigned char myarray[]={0}; //注意,这里数组的长度要足够大,原因目前还不知道
这样的定义方式,定义的数组长度是1
------解决方案--------------------
unsigned char myarray[]={0};这样定义的话长度只有1.
------解决方案--------------------
在参数里传数组的长度,函数里再判断一下
------解决方案--------------------
c99 里面有变长数组、灵活长度数组两张方式,可以参考一下。
不过对于这样的需求,直接使用指针动态分配内存不是挺好的么。
------解决方案--------------------
经过VC++6.0调试可以发现,printf函数实际返回的值为27字符,你那样定义数组,调试的话会发现只有一个myarray[0]有值,虽然后面的值都被加在数组后面,能成功输出你想输出的字符串,但是除了第一个值,后面的访问都是越界的
------解决方案--------------------
内存只有1字节.
分析这是什么错:
出错记录:
---------------------------
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);
}
------解决方案--------------------
应该是越界了
------解决方案--------------------
unsigned char myarray[]={0}; //注意,这里数组的长度要足够大,原因目前还不知道
这样的定义方式,定义的数组长度是1
------解决方案--------------------
unsigned char myarray[]={0};这样定义的话长度只有1.
------解决方案--------------------
在参数里传数组的长度,函数里再判断一下
------解决方案--------------------
c99 里面有变长数组、灵活长度数组两张方式,可以参考一下。
不过对于这样的需求,直接使用指针动态分配内存不是挺好的么。
------解决方案--------------------
经过VC++6.0调试可以发现,printf函数实际返回的值为27字符,你那样定义数组,调试的话会发现只有一个myarray[0]有值,虽然后面的值都被加在数组后面,能成功输出你想输出的字符串,但是除了第一个值,后面的访问都是越界的
------解决方案--------------------
内存只有1字节.