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”连接到它时,你将超出缓冲区的边缘.这是未定义的行为. 如果行为在标准中明确未定义,那么编译器和运行时的实现可以做任何事情.你的程序会崩溃.或者它可以运行险恶的代码.它也可以像你的情况一样工作.但这不是你可以依赖的东西. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- PG索引创建与Oracle的不同
- ruby-on-rails – 使用omniauth时设计跳过确认
- 第三方控件DevExpress的TreeList绑定XML文件
- 工程中导入sqlite -sqlite 基础教程(1)
- VS项目依赖多种库导致LNK2005错误原因及解决方案
- Machine Learning with Oracle Database Advanced Analytic
- ruby-on-rails – ActiveSupport ::类方法的回调
- EMC Hybrid Cloud, 混合云部署SAP解决方案
- jsonp跨域请求,
- ruby-on-rails – Rails 3 – 在控制器中截断?