c语言指针问题

【2.53】下面程序的输出结果是____。
#include<stdio.h>
char
*pp[2][3]={ "abc", "defgh", "ijkl",
"mnopqr", "stuvw", "xyz"};
main( )
{printf("%c\n",***(pp+1)); /* ① */
printf("%c\n",**pp[0]); /* ② */
printf("%c\n",(*(*(pp+1)+1))[4]); /* ③ */
printf("%c\n",*(pp[1][2]+2)); /* ④ */
printf("%s\n",**(pp+1)); /* ⑤ */
}
① 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
答案是DADDB
能否详细解答一下?

pp是一个二维字符串类型的指针,也就是说它能保存2*3=6个字符串地址,

每个字符串都只保存地址,这样就不限制大小,所以保存的是字符串;

pp是这个指针的名字,它也代表的是该指针的首地址!

*pp是取pp的值,即它保存的地址!等价于pp[0];

看1,***(pp+1),其中pp+1代表第二行,*(pp+1),即就是取第二行的首地址.其他的自己结合上图

 

理解。

温馨提示:内容为网友见解,仅供参考
无其他回答

c语言指针的赋值问题
在C语言中,指针的赋值是通过将变量的地址赋给指针变量来实现的。指针的基本概念 在C语言中,指针是一个变量,其特殊之处在于它存储的是其他变量的地址,而不是值本身。指针使我们能够间接地访问和修改变量的值。指针的赋值过程 当我们为指针变量赋值时,实际上是将其指向一个变量的内存地址赋给它。这...

C语言指针问题
假如 P 是指针 那么 *p 就代表变量。 而&a是地址, *p=&a 就是把地址给变量,当然不正确了,因为地址只能给指针。p2,*p1都是变量,变量之间互相赋值是正确的。“原因是被赋值的指针变量前不能再加*说明符”这句话的意思是:如果 给 指针P加上“*”,那么它就变成 了变量,代表的意义...

c语言程序指针问题
分析:程序没有正确区分数组和指针。在C语言中,当把字符串常量赋予指针时,该字 符串常量就存储在静态存储区中。此时数据不能用指针修改,应用数组的方式进行修改。

c语言问题,关于指针的问题
一、比如我们定义一个int型指针变量。int *p=NULL;初值为空。那么当执行while(p);时,只有p==NULL时,while循环才会结束。所以如果我们写while(p);printf。。。;那么只有当p为空时,后面的printf才会执行。否则就一直循环,这样我们就能判断p为空了。同理!p,自然就能判断p不为空了。二、p...

c语言选择题(指针)
答案是A,首先定义p是一个指向int类型的指针,不过这个指针没有初始化,也就是没有指向。然后定义了一个int类型的变量i,这里千万不要认为i也是个指针,如果i跟p一样,要在前面也加个*号。然后分析答案: A,这里对p指向的变量进行赋值,这里是相当于初始化了。所以正确。B,不正确\/不合理,因为p的...

C语言中的指针问题到底是怎么回事~
在指针的算术运算中,指针所指向的类型有很大的作用。 指针的类型(即指针本身的类型)和指针所指向的类型是两个概念。当你对C越来越熟悉时,你会发现,把与指针搅和在一起的“类型”这个概念分成“指针的类型”和“指针所指向的类型”两个概念,是精通指针的关键点之一。我看了不少书,发现有些写得差的书中,就把...

c语言这几道题 关于指针的 望大神解答
2、A之所以错是因为代码中有一句q=NULL,也就是说q是一个空指针了,你再向里面写东西就错了,而且你在vc6.0中可以试一下,马上会出现一条0xc000 0005的写异常。。3、是的,你不管给它赋值多少都是4的。。就好比一个4平方米的房子,你装多少东西,装什么东西,它都是4平方米。有问题继续追问...

C语言求助指针的移动问题
这几个运算符中,=叫赋值运算符,它的优先级最低,而++的优先级最高,*次之。其实运算结果也不是“先赋值”,是先进行*操作从p指向的地址中取出值来才赋给S的,最后才对p增1。之所以优先级最高的++在最后进行,是由它自身的功能决定的:它写在变量后面,叫后增1运算符。后增1运算符要在它...

C语言指针的赋值问题
int*p;p为指针,地址是未知的,如果直接赋值 p=a;这样编译可以通过,但是会产生警告,p的地址是随机分配的,这样对未知的地址赋值很危险,可能会覆盖掉某些重要数据,所以避免这种危险,在定义指针时注意初始化,也就是赋值。可以int*p=&a;或者int*p;p=&a;然后再对p进行操作 有错。注意大小写,...

c语言,指针指向另一个指针的问题,为什么报错?
图中红色框内代码有误,*(p+5)不是表示指针而是值。应改为 q = p+5 另外补充说明,改成这样虽然没有语法错误,但是很明显p+5已经超过数组a的内存空间,需要注意。

相似回答
大家正在搜