求解,求解释
【解析】“s”是代表数组首地址的地址常量,不是变量,“=”左边不能出现常量,因此s="ABCDEF"语法错误。“**s”和“s”一样;“*s”是指变量地址,不能给其赋字符串。
答案是说C
看了依旧不懂!
首先你理解错了,指针可以赋值的,它是指向了一个常量地址,但它自己是变量
然后 在C语言中字符串是有值的,但它的值不是这一串字符,它的值是一个常指针,相当于const char*
就上面的题举例:学校考试的话,答案应该是B
B 才是对的吧 不考虑类型强转并且 在此前有 s=new char*;
typedef char * pchar;
pchar *s;
s可以看成以上定义 也许更方便理解
typeid("ABCDEF").name()是const char [7];
typeid(*s).name()是char *;
typeid(**s).name()是char;
如果考虑强转 可以参考如下
s=new char **;//s=(char **)(void*)("ABCDEF");
*s=new char *;//**s=(char)(long)(void*)("ABCDEF");
//*s=(char*)(long)('A');
如下操作经过VS2010 测试
char **s,**ppt,*pt,p;