const char * ptr vs char ptr []



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

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],以节省终止零(字符串字符的末尾)的空间

最新更新