孕囊张力欠佳什么意思:c语言指针数组问题

来源:百度文库 编辑:高考问答 时间:2024/05/08 17:59:04
【2.53】下面程序的输出结果是____。
#include <stdio.h>
char *pp[2][3]={ "abc", "defgh", "ijkl", "mnopqr", "stuvw", "xyz"};
main ( )
{ printf("%c\n",***(pp+1)); /* ① */D
printf("%c\n",**pp[0]); /* ② */A
printf("%c\n",(*(*(pp+1)+1))[4]); /* ③ */
printf("%c\n",*(pp[1][2]+2)); /* ④ */D
printf("%s\n",**(pp+1)); /* ⑤ */B
}
① A) a B) d C) i D) m
② A) a B) d C) i D) m
③ A) h B) l C) q D) w
④ A) k B) o C) u D) z
⑤ A) ijkl B) mnopqr C) stuvw D) xyz
参考答案: ① D ② A ③ D ④ D ⑤ B
要求有详细分析过程

#include <stdio.h>
char *pp[2][3]={ { "abc", "defgh", "ijkl"} , { "mnopqr", "stuvw", "xyz"} }; //2维数组等价于此
main ( )
{ printf("%c\n",***(pp+1)); /* ① */D
//*(pp+1)即pp[1]指向{ "mnopqr" , "stuvw", "xyz"}元素
//**(pp+1)即pp[1][0]指向"mnopqr"
//***(pp+1)即pp[1][0][0]即'm'

printf("%c\n",**pp[0] ); /* ② */A
//pp[0]指向{ "abc", "defgh", "ijkl"}
//*pp[0]即pp[0][0]指向"abc"
//**pp[0]即pp[0][0][0]即'a'

printf("%c\n", (*(*(pp+1)+1))[4] ); /* ③ */
//*(pp+1)即pp[1]指向{ "mnopqr" , "stuvw", "xyz"}
//*(*(pp+1)+1)即pp[1][1]指向"stuvw"
//(*(*(pp+1)+1))[4]即pp[1][1][4]即'w'

printf("%c\n", *(pp[1][2]+2) ); /* ④ */D
//pp[1][2]指向"xyz"
//*(pp[1][2]+2)即pp[1][2][2]即'z'

printf("%s\n", **(pp+1) ); /* ⑤ */B
//*(pp+1)即pp[1]指向{ "mnopqr" , "stuvw", "xyz"}
//**(pp+1)即pp[1][0]指向"mnopqr"
//输出类型string,输出"mnopqr"
}

上面分析得精彩.呵呵.