当前位置: 技术问答>linux和unix
为什么没有数组越界?
来源: 互联网 发布时间:2016-03-13
本文导语: #include #include char *strcy(char *strDest, char *strSrc) { char *head = strDest; while(*strDest++ != ''); strDest--; while(*strDest++ = *strSrc++); strDest = head; return head; } int main(int argc, char *argv[ ]) { char str1[ ] = "hello"; char str2[...
#include
#include
char *strcy(char *strDest, char *strSrc)
{
char *head = strDest;
while(*strDest++ != '');
strDest--;
while(*strDest++ = *strSrc++);
strDest = head;
return head;
}
int main(int argc, char *argv[ ])
{
char str1[ ] = "hello";
char str2[ ] = "word!!!";
printf("%d, %sn", sizeof(str1), str1);
printf("%sn", strcy(str1, str2));
printf("%d, %sn",sizeof(str1),str1);
}
我用的是GCC和VC实验过 VC有打印有乱码,GCC打印为:
6, hello
helloword!!!
6, helloword!!!
就算数组不越界,那数组的大小为什么也没有改变?
望高人指点。
#include
char *strcy(char *strDest, char *strSrc)
{
char *head = strDest;
while(*strDest++ != '');
strDest--;
while(*strDest++ = *strSrc++);
strDest = head;
return head;
}
int main(int argc, char *argv[ ])
{
char str1[ ] = "hello";
char str2[ ] = "word!!!";
printf("%d, %sn", sizeof(str1), str1);
printf("%sn", strcy(str1, str2));
printf("%d, %sn",sizeof(str1),str1);
}
我用的是GCC和VC实验过 VC有打印有乱码,GCC打印为:
6, hello
helloword!!!
6, helloword!!!
就算数组不越界,那数组的大小为什么也没有改变?
望高人指点。
|
越界,不是看结果是什么,而是看一个数组是不是使用了不属于它的空间,如果是,那么你只能看运气了,可能结果是对的,可是这样的结果没有意义,因为你不能象买彩票那样只靠运气来得到结果。