const char * ptr 与 char ptr []

const char * ptr vs char ptr []

我正在将一个字符串常量从 main 传递给一个函数,我的问题是为什么当我在函数参数中放置一个字符数组 (cstring) 时出现错误,但是当我放置常量字符指针时它工作正常,数组不是常量指针吗?? 这是函数(它实际上是我的字符串 class 的参数化构造函数)

String (   const char * str )
        {
            size = strlen(str);
            arr = new char [size] // arr and size are my data members
            for ( int i = 0 ; i<size ; i++)
                arr[i] = str[i];
        }
  1. 除非指针被显式定义为常量(const)否则指向数组的指针不是常量而只是一个常规指针,因此可以修改
  2. 上面的代码是错误的,因为 arr 应该是 len [size + 1] 以保存 space 用于终止零(字符串字符的结尾)