经过研究,我实际上找到了我之前问题的答案。为什么计算机告诉我我无法定义数组的元素。
#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] - 来源
答案 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
答案 1 :(得分:1)
'a'
是字符“a”。只有一个字符,而不是字符串。
"a"
是两个char
的数组;它等同于:char a[2] = {'a', '\0'};
额外的字符(\0
)是空终止符,因为C / C ++中的原始字符串不能明确地保持它们的长度。