今天看到一道题目,突然把自己对指针的理解整混乱了。
题目是这样的:假设定义了一个指针数组tBooks如下,请定义一个指向它的数组指针p,让程序可以顺利执行,并按要求打印出数据。
代码:
char *tBooks[] = {
"《数据结构》",
"《计算机组成原理》",
"《C语言程序设计》",
"《计算机网络》",
"《哆啦A梦》"
};
__A__ = __B__;
printf("请打印出《哆啦A梦》:\n%s\n",__C__);
如果是直接定义一个每个指针元素指向指针的指针数组,那么题目就简单了。
只需要定义一个长度为4的元素指向指针的指针数组并将tBooks的二级指针的地址(就是指向字符串指针的指针的地址)赋予给新定义的指针即可,再对数组内地址进行字符串打印。
倘若利用指向指针的指针数组
代码:
char **p[4] = &tBooks[0];
printf("请打印出《哆啦A梦》:\n%s\n",*p[3]);
(因为指针数组tBooks存放的地址指向的是字符串指针,所以指针数组里的指针元素为二级指针&tBooks[0],整个数组的指针为三级指针&tBooks)
可题目要求使用数组指针完成,没办法