|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <stdio.h>
- #include <string.h>
- int main()
- {
- char test[11] = "contacting";
- char chars[9] = "fighting";
- strcat(test,chars);
- printf("字符串的大小是:%d\n",sizeof(test));
- printf("字符串长度:%d\n",strlen(test));
- printf("字符串内容是:%s\n",test);
- return 0;
- }
复制代码
代码如上
我的理解是使用连接函数之后的“sizeof(test)”会变成原来的“sizeof(test)+sizeof(chars)”-1,长度则为“sizeof(test)+sizeof(chars)”-2。
但最后输出的结果如下:
“字符串的大小是:11
字符串长度:18
字符串内容是:contactingfighting”
字符串长度符合猜想,但为什么字符串的大小没有发生改变呢?
麻烦了!
c/c++ 不会对数组进行越界检测,意思是有可能出现你所描述的现象,但是这样 不安全,因为你不知道数组后面的内存单元是否已经被使用,如果被使用,就会溢出报错,如果没有被使用,就会出现你那种情况。
|
|