用于动态创建数组的字符数组的大小

sizeof character array for a dynamically created array

本文关键字:数组 字符 动态 用于 创建      更新时间:2023-10-16

我需要根据模式长度动态创建一个字符数组,即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, plen3, tableaaa,其存储值为pattern.

这是因为table是指针,而不是数组。在你的架构中指针的大小是8字节

sizeof(expression)只是sizeof(type of that expression)的语法替代。

在您的示例中,sizeof(table)只是sizeof(char*)的语法替代。指针的值、它所指向的字符或它所指向的数组永远不会作为结果考虑,只考虑其类型。