作业帮 > 数学 > 作业

已知char **s;下面正确语句是()A,s="ABCDEF";B,*s="ABCDEF";C,**s="ABCDEF

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:数学作业 时间:2024/04/28 00:47:55
已知char **s;下面正确语句是()A,s="ABCDEF";B,*s="ABCDEF";C,**s="ABCDEF";D,*s='A'
【解析】“s”是代表数组首地址的地址常量,不是变量,“=”左边不能出现常量,因此s="ABCDEF"语法错误.“**s”和“s”一样;“*s”是指变量地址,不能给其赋字符串.
看了依旧不懂!
已知char **s;下面正确语句是()A,s=
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;
  cout<<"**s:"<<typeid(**s).name()<<endl;
  cout<<"*s:"<<typeid(*s).name()<<endl;
  cout<<"s:"<<typeid(s).name()<<endl;
  cout<<"\"ABCDEF\":"<<typeid("ABCDEF").name()<<endl;
  s=ppt=new char*;
  *s=pt=new char ;
  **s=p='A';
  **s=(char)(long)(void*)"A";
  *s=(char*)(long)'a';
  *s="B";
  s=(char **)(void *)"C";
  s=(char**)(void*)(long)'d';
  delete ppt;
  delete pt;