首先要知道这个s是字符指针数组,其中每一个项都是一个字符串的首地址.
如 s[0]="Student"的首地址 s[1]="Teacher"的首地址
这样s[0]实际上是"Student"这个字符数组的首地址,也就是说假设
char* ss="Student",那么s[0]=ss=ss[0],
所以*s[1]='T'.
由于ps是char*类型的,也就是char *ps,所以ps实际是一个字符数组的指针(首地址),而ps=s[2],这样将ps赋值成"Father"这个字符数组的首地址了,因此在cout中输出字符数组是"Father"
*ps是取ps这个字符数组的首元素的值,因此相当于ps=ps[0]=&'F',所以*ps='F'
说了半天,总结一下,一个字符串(也就是字符数组)的首地址就是这个字符串首字符的存储地址,如char* str="aaa";则*str=*str[0]='a',把握住这个就不会错了.
最后提醒一下,数组的首地址只要不是动态分配的,那么它就是常量不能改变.如int a[2]={1,2};a++;这样是错的,但是int* p=a;p++;这样正确.
温馨提示:答案为网友推荐,仅供参考