用于动态创建数组的字符数组的大小
sizeof character array for a dynamically created array
我需要根据模式长度动态创建一个字符数组,即plen
。然而,当我做sizeof(table)
时,我得到8。为什么我得到的是8
而不是3
?
int main() {
char *pattern = "aaa";
int plen = strlen(pattern);
char *table = new char[plen + 1];
for(int i = 0; i < plen; i++) {
table[i] = pattern[i];
}
cout << sizeof(table) << plen << table;
return 0;
}
我得到的输出是83aaa...
: sizeof(table)
为8
, plen
为3
, table
为aaa
,其存储值为pattern.
这是因为table
是指针,而不是数组。在你的架构中指针的大小是8字节
sizeof(expression)
只是sizeof(type of that expression)
的语法替代。
在您的示例中,sizeof(table)
只是sizeof(char*)
的语法替代。指针的值、它所指向的字符或它所指向的数组永远不会作为结果考虑,只考虑其类型。
相关文章:
- 指向指向字符数组的指针数组的指针
- 比较字符数组
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 使用无符号字符数组有效存储内存
- 按字符值访问int数组
- 错误:字符数组的初始值设定项太多
- 对字符数组中的元素执行逐位操作
- C++,在int数组中输入字符串或字符会输出0,而不是ascii或error
- C++ 无法在字符数组中使用 for 循环打印字母模式
- 如何在 C++ 中从文件中读取字符数组(带有一些空格)
- 移动二维数组中的字符
- C++ 传递二维字符数组
- 无法在 C++ 中输入字符数组
- C++ 带结构的数组字符
- 数组字符包含量超出预期
- 读取文件并添加到数组字符
- 如何在Qt中更改或替换数组字符
- 为什么编译器不在参数中传递数组字符 *arr[] 的大小?
- 井字棋数组字符错误
- 分割数组字符