回答评论 - 来自' const char *'的无效转换去#char;'

时间:2018-03-28 03:08:34

标签: c++ char const

经过研究,我实际上找到了我之前问题的答案。为什么计算机告诉我我无法定义数组的元素。

#include <iostream>


 using namespace std;
 int x;
 int y;

 int main(){

 char DuplicateDeleter[6];
    //we must define each element
DuplicateDeleter[0] = 'a';
DuplicateDeleter[1] = 'b';
DuplicateDeleter[2] = 'c';
DuplicateDeleter[3] = 'd';
DuplicateDeleter[4] = 'e';
DuplicateDeleter[5] = 'f';
 }

答案是我必须使用&#39; a&#39;在&#34; a&#34;,我的问题是这两者之间的区别是什么?我怀疑他们几乎做了同样的事情。什么是&#34; x&#34;告诉电脑&#39; x&#39; ISN&#39;?吨

error: invalid conversion from ‘const char*’ to ‘char’ [-fpermissive] - 来源

2 个答案:

答案 0 :(得分:1)

"x"NULL终止的字符数组。它有2个字符,即{'a', '\0'}。 'x'是单个字符。

您可以通过以下代码段进行验证。看到它正常工作here

int main() {
    cout<<"sizeof(\"x\") = " <<sizeof("x") <<endl<<"sizeof('x') = " <<sizeof('x') <<endl;

    cout<<"Content of \"x\" are(in Hexadecimal): "<<endl;
    char x[] = "x";
    cout.setf(ios::hex, ios::basefield);
    for(int i=0; i<sizeof("x"); i++)
         cout<<"\t "<<(int)x[i] <<endl;
    return 0;
}

<强>输出

sizeof("x") = 2
sizeof('x') = 1
Content of "x" are(in Hexadecimal): 
     78
     0

您可以查看更多信息herehere

答案 1 :(得分:1)

'a'是字符“a”。只有一个字符,而不是字符串。

"a"是两个char的数组;它等同于:char a[2] = {'a', '\0'};额外的字符(\0)是空终止符,因为C / C ++中的原始字符串不能明确地保持它们的长度。