指针进阶

一、书本学习

1、手写笔记

 

 

 

 

 

 

 

 

 2、代码列表

 

 3、存在的问题

①、指针数组和二维数组的区别(指针数组是二级指针,二维数组是连续的内存单元)

结果:二维数组其实是数组的数组,也就是连续内存单元的连续内存单元,纵横坐标足够大的话,可以占用非常大的空间,且二维数组的列长度确定,当数组元素长度不等时可能造成内存浪费;

           指针数组是指向字符串的指针,本身并不具有储存字符串的空间,需要现给其一个指向,才能将字符串储存到相应的位置,故不存在上述内存浪费现象。

②、在以命令方式运行程序时 '.\' 的作用是什么?

 

结果:系统原因,不同系统要求不同。

 ③、在运用指针数组解密藏头诗中对如下程序不理解

 

结果:在GBK编码中汉字占用2字节,在UTF-16编码通常汉字占两个字节,若该程序使用两种编码中一种,则poem[i]+1==poem[i]+sizeof(char) 既poem[i]与poem[i]+1代表一个汉字保存到mean[2i]与mean[2i]+1中。

二、PTA题目

1、PTA1-1:int (*p)[4]它表示p是一个指针数组,它包含4个指针变量元素。T/F

结果:以上定义涉及两个运算符:“*”(间接引用)、“[]”(下标),“[]”的优先级别大于“*”的优先级别。int (*q)[4]首先是个指针,即*q,剩下的“int [4]”作为补充说明,即说明指针q指向一个长度为4的数组。

答案:F

2、PTA2-1以下哪个定义中的p不是指针,请选择恰当的选项:

                  A.char **p;

                  B.char (*p)[10];

                  C.char *p[6];

                  D.给出的三项中,p都是指针

结果:A为一个二级指针。B.char (*q)[6]首先是个指针,即*q,剩下的“char [6]”作为补充说明,即说明指针q指向一个长度为6的数组。C.char*p[6],“[]”的优先级别高,所以它首先是个大小为6的数组,即p[6];剩下的“int *”作为补充说明,即说明该数组的每一个元素为指向一个字符类型的指针。

答案:C

 3、运用3种方式实现strcpy——PTA3-4

①运用strlen实现strcat

 

 ②运用for语句实现strcat

 

 ③运用while语句实现strcat

 

posted @ 2020-04-12 13:48  板蓝根拌饭  阅读(371)  评论(0编辑  收藏  举报