【问题标题】:const char myVar* vs. const char myVar[] [duplicate]const char myVar* 与 const char myVar[] [重复]
【发布时间】:2011-08-16 17:13:22
【问题描述】:

可能重复:
Difference between using character pointers and character arrays

两者有什么区别:

const char* myVar = "Hello World!";
const char  myVar[] = "Hello World!";

如果有的话?

【问题讨论】:

    标签: c++ c


    【解决方案1】:

    指针可以重新赋值,数组不能。

    const char* ptr = "Hello World!";
    const char  arr[] = "Hello World!";
    
    ptr = "Goodbye"; // okay
    arr = "Goodbye"; // illegal
    

    另外,正如其他人所说:

    sizeof(ptr) == size of a pointer, usually 4 or 8
    sizeof(arr) == number of characters + 1 for null terminator
    

    【讨论】:

    • +1 我认为这是对所给问题的更合适的答案
    【解决方案2】:

    首先是一个指针。
    其次是一个数组。

    系统中所有指针的大小将相同。
    第二个声明中的数组大小等于字符串文字加上\0的大小。

    您可以将第一个指针指向任何其他相同类型的变量。
    您不能重新分配数组。

    【讨论】:

      【解决方案3】:

      第一个是指针:sizeof(myVar) == sizeof(void*)。它是非常量的,所以你可以修改它:myVar++

      第二个是一个数组:sizeof(myVar) == 13

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-09-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-25
        • 1970-01-01
        • 2013-11-09
        相关资源
        最近更新 更多