作业帮 > 综合 > 作业

static char s1[]= "abcde" ,s2[5]={'m','n','p','q','\0'}; cha

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/07/08 14:50:37
static char s1[]= "abcde" ,s2[5]={'m','n','p','q','\0'}; char * ps=s1;
cout
static char s1[]=
输出是 ace99
因为数组名也是地址,所以char * ps=s1;是可以的
*ps就是s1[0],*(ps+2)就是s1[2],*(ps+4)就是s1[4],这就可以说清楚为什么前三个是ace了.
那么剩下的99是怎么回事呢?
我们看看表达式*ps+2就是s1[0]+2,也就是‘a’+2,加号两边的操作数一个是char类型,另一个是int类型,这时候系统会自动把char转为int,由于‘a'的ASCII码是97,所以‘a’转为int类型后也就是97,所以表达式‘a’+2的值(别忘了表达式原始的形式是*ps+2)就是99,系统将99按int类弄输出
再问: char * ps=s1;是将S1[]的地址给*ps?那要是将s1[]中的内容给它应该这么写呢?
再答: 如果将s1[]中的内容,应该这样写 char *ps = new char[strlen(s1)];//首先为ps分配足够的存储空间 for(int i=0;i