我正在玩字符串和指针。它为我打开了另一个编程世界,但我没有得到它背后的逻辑。
错误:无法将
char[6] *
转换为char *
void main() {
int arr[]={1,2,3,4,5};
char ch[]= {'a','b','c','d','e',0};
char ch1[]= "abcde";
char *ch3="this a";
clrscr();
ch3 = &ch1;
printf("%c",*(ch3));
getch();
}
答案 0 :(得分:4)
问题出在
行ch3 = &ch1;
表达式&ch1
具有类型“指向char
的6个元素数组的指针”或char (*)[6]
。 ch3
的类型为char *
。这两种类型不兼容,因此错误。要解决此问题,请从&
:
&ch1
ch3 = ch1;
表达式ch1
的类型为“6个元素数组char
”或char [6]
。由于它不是sizeof
或一元&
运算符的操作数,因此它将被转换(“衰减”)为类型char *
的表达式,并且表达式的值将是数组的第一个元素的地址。
此代码还存在其他问题,但这就是造成错误的原因。