char *a[2]={"one","two"},**p=a;printf("%s",*(p++)+1);printf("%c",**p-1);求解答分析
2个回答
展开全部
char *a[2]={"one","two"}, //a为指针数组,a[0]为"one"的首地址,a[1]为"two"的首地址。
**p=a; //p为二级指针,初始化为(指向)数组a的首元素即a[0]
printf("%s",*(p++)+1); //(p++)先返回(取得)p值使用,即a[0]中的值!
// 解引用后*(p++)得到"one"的首地址,再+1,
// 就指向"one"的n处,输出ne。然后p进行加1,指向a[1]。
//p++返回的是p自增前的值,不是自增后的值,切记!
//其实*(p++)可以写成*p++,因为++比*的优先级高!
printf("%c",**p-1); //注意p已经指向了a[1]!**p即取得首字符t,
//(把t)-1后就是输出s了(s比t的值小1,请查看ascii码表)!
**p=a; //p为二级指针,初始化为(指向)数组a的首元素即a[0]
printf("%s",*(p++)+1); //(p++)先返回(取得)p值使用,即a[0]中的值!
// 解引用后*(p++)得到"one"的首地址,再+1,
// 就指向"one"的n处,输出ne。然后p进行加1,指向a[1]。
//p++返回的是p自增前的值,不是自增后的值,切记!
//其实*(p++)可以写成*p++,因为++比*的优先级高!
printf("%c",**p-1); //注意p已经指向了a[1]!**p即取得首字符t,
//(把t)-1后就是输出s了(s比t的值小1,请查看ascii码表)!
追问
解引用后*(p++)得到"one"的首地址,再+1,就指向"one"的n处,输出ne。
什么是解引用?
展开全部
结果为nes,
char *a[2]={"one","two"},//定义了一个字符串数组
**p=a;//额 ,这个前面应该定义了一个char类型二级指针,然后把p指向a数组的首地址,也就是指到了o的位置
printf("%s",*(p++)+1); //p++,运算级较低,后算,先*p,表示 one 这个字符串的首地址,然后+1,指到了n的位置,然后printf,输出ne,然后自增,p指到了two字符串的首地址,
printf("%c",**p-1);// **取值,取出来t,然后-1,正好是s
char *a[2]={"one","two"},//定义了一个字符串数组
**p=a;//额 ,这个前面应该定义了一个char类型二级指针,然后把p指向a数组的首地址,也就是指到了o的位置
printf("%s",*(p++)+1); //p++,运算级较低,后算,先*p,表示 one 这个字符串的首地址,然后+1,指到了n的位置,然后printf,输出ne,然后自增,p指到了two字符串的首地址,
printf("%c",**p-1);// **取值,取出来t,然后-1,正好是s
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询