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

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/18 12:41:34

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

static char s1[]= "abcde" ,s2[5]={'m','n','p','q','\0'}; char * ps=s1;cout
输出是 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类弄输出