1.本章学习总结(2分)
1.1 学习内容总结
整理指针这两章主要知识点,必须包含内容有:
指针与数组:
数组其实也是一种指针,不过指针比较抽象难懂,
指针指向内存地址,做变量使用,可间接访问所指地址中的内容。
字符指针:
字符指针可用来处理字符串,字符串常量是一个字符指针,指向字符串的起始位置。
区别:字符数组占用一块连续的单元,而字符指针只占用所指地址单元。
动态内存分配
malloc动态申请内存
二级指针、行指针
二级指针:
类型名** 变量名;
例:
int a = 10;
int* p = &a;
int** p = &p;
a、* p、** p代表同一个单元,它们的值相同
理论上,可以定义任意多级指针,但实际中很少超过二级,避免指针级数过多造成理解错误,使程序可读性降低。
行指针:int(p)[n]; p = a;
p + i表示第i行的首地址a[i],二级指针
a[i][j] = ((p + i) + j) = ((p + i))[j] = p[i][j];
指针数组及其应用
int *p;
int i;
char *pch[6]={"1","2","3","4","5","6"};
for(i=0;i<6;i++)
printf("%s",pch[i]);
指针做函数返回值及其注意:
局部变量在指针返回时会消失。
1.2 本章学习体会
模模糊糊,基本应用会了,但是用到具体的题目中又不会用。
代码量马马虎虎500左右。
2.PTA实验作业(7分)
2.1 题目名1
2.1.1 伪代码
for(1-n)将指针变量逆序赋值给数组a
for(1-n)将数值赋值会给指针,由指针返回值(数组将被销毁,无法返回值)
2.1.2 代码截图
2.1.3 总结本题的知识点
函数中利用指针可返回值,而数组等在函数结束时会销毁,无法得到值。
2.1.4 PTA提交列表及说明
提交列表说明:
1.编译错误:指针在函数中运用是没有规范,出现编译错误,在vs中调试后正确。
2.2 题目名2
2.2.1 伪代码
while(low<high)如果mid等于key,返回值,否则不断缩小low,high范围得到答案。
2.2.2 代码截图
2.2.3 总结本题的知识点
2分查找,不断缩小范围,利用指针来传输数据以及返回值。
2.2.4 PTA提交列表及说明
编译错误:没定义好
答案错误:count的返回值没弄好
部分正确:count的返回值没弄好,就对了错误的测试点,后来发现用指针count返回值。
答案正确:。。。
2.3 题目名3
2.3.1 伪代码
for遍历数组找出最大值
交换位置
同样方法找出次大值交换位置
2.3.2 代码截图
2.3.3 总结本题的知识点
利用指针遍历来找最大值
2.3.4 PTA提交列表及说明
编译错误:第一次忘记定义i,第二次忘记函数返回值。
答案正确:。。。。。
3.阅读代码(-2--1分)
代码功能:输入一个字符串和一个子串,找到并删除字符串中的所有子串。
作者脑回路清奇,方法厉害,代码很简单就做出来了,一句卧槽足以看出作者之牛逼。