错误:无法将char [6] *转换为char *

时间:2018-01-18 15:32:08

标签: c

我正在玩字符串和指针。它为我打开了另一个编程世界,但我没有得到它背后的逻辑。

  

错误:无法将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(); 
}

1 个答案:

答案 0 :(得分:4)

问题出在

ch3 = &ch1; 

表达式&ch1具有类型“指向char的6个元素数组的指针”或char (*)[6]ch3的类型为char *。这两种类型不兼容,因此错误。要解决此问题,请从&

中删除&ch1
ch3 = ch1;

表达式ch1的类型为“6个元素数组char”或char [6]。由于它不是sizeof或一元&运算符的操作数,因此它将被转换(“衰减”)为类型char *的表达式,并且表达式的值将是数组的第一个元素的地址。

此代码还存在其他问题,但这就是造成错误的原因。