首页 > 解决方案 > C++ 中 char 数组的初始化是如何工作的?

问题描述

我对 C++ 很陌生,我看到了这种我以前从未学过的 char 数组的初始化方式。我想知道下面的代码与分配相比如何工作 char tmp[] = {'a','b','c',...};

const char charset[] = 
                        "abcdefghijklmnopqrstuvwxyz" 
                        "ABCDEFGHIJKLMNOPQRSTUVWXYS" 
                        "0123456789";

标签: c++

解决方案


字符串文字存储在可执行文件中的某个位置,编译器知道它们的存储地址。通过将字符串文字分配给 char* 指针,将存储文字的内存位置的地址复制到变量中。另一方面,使用字符串字面量初始化数组会将字符串复制到数组中,同时将数组的剩余元素设置为零。

请注意,字符串文字会自动以尾随零字节存储。此方法与花括号初始化之间的唯一区别是编译器添加了尾随零。


推荐阅读