char *
STRCAT(char *dest, const char *src)
{
strcpy(dest + strlen(dest), src);
return dest;
}
C语言源码里的dest + strlen(dest)怎么解释
当我运行以下代码时
#include <stdio.h>
#include <string.h>
void main()
{
char s[10]= "123456789";
char str[10] = " 123456789";
strcat(s,str);
printf("%d\n",sizeof(s));
printf("%s\n",s);
}
字符串s大小并没有改变,为什么容纳了大于其内存的字符串
实际上会有问题的,这已经发生了数组的越界了,C++不检测是否发生数组越界,虽然能输出,但在main函数结束调用后清除函数的栈内存会出现问题。
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y
你这个理解有点偏差,s字符串定义的时候就要考虑好s和str相加后的最大长度,现在s的最大长度都放满了,当然拷贝不进去。