C语言网课上关于指针和数组的一道题

img

img


为什么这里y一直说访问权限冲突?还有y[i]这样的表达是指元素的值还是地址呢?我应该写成y[i]=*x还是y[i]=x呢?又有什么区别?

x代表char*(指针变量),你把它赋值给了字符数组y的第i个元素,但是字符数组y是字符类型(char q[]="a b c")而不是字符指针类型(char q[]={&a, &b, &c}),所以赋值类型不对,x是取出x字符指针对应内容,y[i]=*x是对的


y[i] = *x; //x是地址,*x是取x地址下的值,y[i]是字符,不能用y[i]=x

//下面的
y[i] = '\0';//不是y[i+1]= '\0';

img

好的,你说的我明白了!那我改成这样为什么还是错的呢?