gpt4 book ai didi

c++ - 当您声明一个具有初始大小的数组时,它的元素最初是空字符串吗?

转载 作者:行者123 更新时间:2023-11-28 00:41:57 26 4
gpt4 key购买 nike

例如 a[20] 的元素,如果尚未定义,将首先作为空字符串开始(即 a[0]=="", a[1]=="", a[2]= ="",.....a[20]=="").我不确定这是否是正确的逻辑,或者我是否将它与 JavaScript 混淆了。

最佳答案

C++ 中的数组保存给定类型的元素。默认初始化的数组是否包含空字符串取决于数组所包含元素的类型。

当一个数组被默认初始化时,

SomeType arr[42]; // contains 42 SomeType objects

它的元素也是默认初始化的。对于内置类型,例如 intdoublebool 和指针,这意味着 No initialization 是执行。它们可以包含任何值,并且从中读取是未定义的行为。对于用户定义的类型,调用默认构造函数。它的类型是表示一个字符串的东西,它的默认构造函数创建一个表示空字符串的对象,那么是的,可以说这样一个数组的默认初始化让它充满了空字符串:

std::string strings[42]; // contains 42 empty strings
const char* chars[42]; // contains 42 pointers to char pointing to "random" places

现在,有一个称为值初始化的初始化,它具有零初始化内置类型的效果,并为用户定义的类型调用默认构造函数。这允许您创建零初始化的内置对象数组:

int my_ints[42] = {}; // contains 42 zeros
const char* my_chars[42] = {}; // contains 42 null pointers
char chars[42] = {}; // Contains 42 empty strings (since 0 is string termination by convention)

关于c++ - 当您声明一个具有初始大小的数组时,它的元素最初是空字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18469501/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com