加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C中的字符串声明

发布时间:2020-12-16 10:13:42 所属栏目:百科 来源:网络整理
导读:代码1和代码2之间的区别如下所示.在这两种情况下,我都是相同的.内部有什么不同吗? 代码1 char test[30]="KEL";strcat (test,"DATA"); 代码2 char test[]="KEL"strcat (test,"DATA"); 解决方法 在您的第一个代码示例中,test将有30个字符的空间. 前4个将是字
代码1和代码2之间的区别如下所示.在这两种情况下,我都是相同的.内部有什么不同吗?

代码1

char test[30]="KEL";
strcat (test,"DATA");

代码2

char test[]="KEL"
strcat (test,"DATA");

解决方法

在您的第一个代码示例中,test将有30个字符的空间.
前4个将是字符串“KEL”nul终止符(如果我的记忆服务,其余的也将初始化为零,谢谢 chux).将“DATA”连接到它是明确定义的.

在第二个样本中,它只有4个空格,因为缓冲区的长度是从字符串文字推导出来的.当你将“DATA”连接到它时,你将超出缓冲区的边缘.这是未定义的行为.

如果行为在标准中明确未定义,那么编译器和运行时的实现可以做任何事情.你的程序会崩溃.或者它可以运行险恶的代码.它也可以像你的情况一样工作.但这不是你可以依赖的东西.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读