C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用较小的字符串初始化char数组大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我写:
char arr[8] = "abc";

有没有什么规定什么arr [4]可能是?我做了一些测试
Clang并且似乎数组中的剩余字符设置为null.
另外,char arr [8] =“”;每个字节为零.不知道这是否是编译器
便,标准行为,纯巧合或错误.

void a()
{
    char arr[8] = "abc";    /* breakpoint here,line 3 */
    strcpy(arr,"1234567");
}
int main()
{
    a();
    a();
    return 0;
}

调试器成绩单

Breakpoint 1,a () at str.c:3
3           char arr[8] = "abc";
(gdb) s
Current language:  auto; currently minimal
4           strcpy(arr,"1234567");
(gdb) p arr
$1 = "abc\000\000\000\000"
(gdb) c      
ConTinuing.

Breakpoint 1,a () at str.c:3
3           char arr[8] = "abc";
(gdb) p arr
$2 = "1234567"
(gdb) s
4           strcpy(arr,"1234567");
(gdb) p arr
$3 = "abc\000\000\000\000"
@H_450_15@

解决方法

这是标准行为.

arr [3]被初始化为0,因为终止0是字符串文字的一部分.

所有剩余元素都初始化为0 – ISO/IEC 9899:1999,6.7.8,21:

并且具有静态存储的char对象将初始化为0.

@H_450_15@ @H_450_15@

大佬总结

以上是大佬教程为你收集整理的使用较小的字符串初始化char数组全部内容,希望文章能够帮你解决使用较小的字符串初始化char数组所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。