2022-2023-1 20221318 《计算机基础和程序设计》第十二周学习总结

作业信息
这个作业属于那个班级 https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP
作业要求 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK12
作业目标 学习《C语言程序设计》第11章
作业正文 https://www.cnblogs.com/ni-yidan/p/16890317.html

教材内容总结
* 指针的概念及引入
1.指针变量的定义————来存放变量的地址 初始化————不知把它指向哪里,那就指向NULL,并且指针变量只能指向同一基类型的变量。
2.间接寻址运算符————引用指针指向的变量的值,称为指针的解引用
* 向函数传递指针
1. 按值调用与按地址调用
普通变量作函数参数—按值调用 指针做函数参数—按地址调用

* 函数指针—————指向函数的指针变量
1.数据类型 (*指针变量名)(形参列表);

2.指针函数的应用

* 指针与数组
1. 指针和一维数组间的关系

演示数组和指针变量作函数参数

2. 指针和二维数组间的关系————可将二维数组看作一维数组,其每个数组元素又是一个一维数组,并按行顺序存放所有元素

3. 指针数组及其应用————元素均为指针类型数据的数组
定义形式为: 数据类型 *数组名[数组长度];

学习中的问题
Q:我对于指针与二维数组的关系以及使用还并不是很了解,我在网上查找相关资料
A:1.数组名与指针的关系:
a;//代表数组首行地址,一般用a[0][0]的地址表示
&a;//代表整个数组的地址,一般用a[0][0]地址表示
a[i];代表了第i行起始元素的地址(网上说是代表了第i行的地址,但我觉得不是,在讲数组与指针的关系时我会验证给大家看)
&a[i];代表了第i行的地址,一般用a[i][0]的地址表示
a[i]+j;//代表了第i行第j个元素地址,a[i]就是j==0的情况
a[i][j];//代表了第i行第j个元素
&a[i][j];//代表了第i行第j个元素的地址
*a;//代表数组a首元素地址也就是a[0]或者&a[0][0]
(a+i);//代表了第i行首元素的地址,a是i=0的情况
*(a+i)+j;//代表了第i行j个元素的地址
**a;//代表a的首元素的值也就是a[0][0]
((a+i)+j);//代表了第i行第j个元素

 Q:指针数组与数组指针的区别


首先,对于语句“intp1[5]”,因为“[]”的优先级要比“”要高,所以 p1 先与“[]”结合,构成一个数组的定义,数组名为 p1,而“int”修饰的是数组的内容,即数组的每个元素。也就是说,该数组包含 5 个指向 int 类型数据的指针,如图 1 所示,因此,它是一个指针数组。

其次,对于语句“int(
p2)[5]”,“()”的优先级比“[]”高,“*”号和 p2 构成一个指针的定义,指针变量名为 p2,而 int 修饰的是数组的内容,即数组的每个元素。也就是说,p2 是一个指针,它指向一个包含 5 个 int 类型数据的数组,如图 2 所示。很显然,它是一个数组指针,数组在这里并没有名字,是个匿名数组。

由此可见,对指针数组来说,首先它是一个数组,数组的元素都是指针,也就是说该数组存储的是指针,数组占多少个字节由数组本身决定;而对数组指针来说,首先它是一个指针,它指向一个数组,也就是说它是指向数组的指针,在 32 位系统下永远占 4 字节,至于它指向的数组占多少字节,这个不能够确定,要看具体情况。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
第一周 0/0 3/3 20/20
第二周 105/105 2/5 20/40
第三周 150/255 2/7 20/60
第四周 210/465 2/9 20/80
第五周 280/745 2/11 20/100
第六周 320/1065 1/12 20/120
第七周 400/1465 1/13 20/140
第八周 400/1865 1/14 20/160
第九周 400/2265 1/15 20/180
第十周 400/2665 1/16 20/200
第十一周 400/3065 1/17 20/220
第十二周 360/3425 1/17 20/240
posted @ 2022-11-18 19:00  倪怡丹  阅读(89)  评论(0编辑  收藏  举报