2022-2023-1 20221329 《计算机基础和程序设计》第十二周学习总结
班级链接: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/messiwang/p/dishierzhou.html
学习内容:
指针与一维数组间的关系,指针与二维数组间的关系
向函数传递一维数组和二维数组
指针数组,命令行参数
动态数组,动态内存分配
1.数组名的特殊意义及具在访问数组元素中的作用
―旦给出数组的定义,编译系统就会为其在内存中分配固足的存储单元。相应地,数组的首地址也就确足了。数组元素在内存中是连续存放的,C语言的数组名有特殊的含义,它代
表存放数组元系的连续仔储空间的首地址,即指回数组中第一个元素的指针常量。因此,数组元素既可用下标法也可用指针法来引用。
指针运算的特殊性及其在访问数组元素中的作用
指针的算术运算和天系运算常常是针对数组元素而言的。因数组在内存中是连续存放的,所以指向同一数组中个同无系的两个指针的关系运算常用于比较它们所指元素在数组中的前后位置关系。指针的算术运算(如增1和减1)则常用于移动指针的指向,使其指向数组中的其他元素。当然,仅当运算结果仍指向同一数组中的元素时,指针的算术运算才有意义。
3.数组和指订作为四效爹蚁进行模拟按引用调用中的相似性
用数组名和用指问一维数组的指针变量作函数实参,向被调函数传递的都是数组的起始地址,都是模拟按宁用网用。一维数组做幽数形参时,因为它只起到接收数组起始地址的作用,所以会发生数组类型到指针尖型的愿式转换,即使将形参声明为一维数组,它也将退化为指针,系统仅仅为其分配指针所占的内存空间,并不为形参数组分配额外的存储空间,而是让形参数组共享实参数组所占的存储空间。因此用一维数组作函数形参与用指针变量作函数形参本质上是一样的,因为它们接收的都是数组的起始地址,都需按此地址对主调函数中的实参数组元素进行间接寻址,因此在被调函数中既能以下标形式也能以指针形式来访问数组元素。需要注意的是,数组和指针并非在所有的情况下都是等同的。例如, sizeof(数组名)和 sizeof(指针变量名)就是不可互换的。
二维数组的行地址和列地址
在C语言中,可将一个二维数组看成是由若干个一维数组构成的。
2-通过二维数组的行指针和列指针来引用二维数组元素
通过对二维数组的行地址和列地址的分析可知,二维数组中有两种指针。一种是行指针,使用二维数组的行地址进行初始化;另一种是列指针,使用二维数组的列地址进行初始化。
静态数组与动态数组的区别
对于静态数组,一旦定义了,数组长度也就指定好了,系统将为它分配一个固定大小的空间,使用完无需释放,引用简单,但是创建后无法改变其大小,这在应用中是一个致命弱点!
对于动态数组,它可以随程序需要而重新指定大小,其创建麻烦,使用完必须由程序员自己释放,否则将会引起内存泄露。但其使用非常灵活,能根据程序需要动态分配大小。所以相对于静态数组的来说我们对于使用动态数组有很大的自由度。
动态数组的内存空间是从堆上分配的,通过执行代码而为其分配存储空间。当程序执行到这些语句时,才为其分配,程序员自己负责释放内存。
动态内存分配:
上周错题总结:
Which of the following is a generic term used for any device on a network?
A. Modem
B. Gateway
C. Node
D. Router
E. Repeater
正确:C
Which of the following deals with the routing of packets through the maze of the Internet to their final destinations?
A. FTP
B. HTTP
C. IP
D. SMTP
E. TCP
正确:C
学习进度条:
代码行数(新增/累计) | 博客(新增/累计) | 重要成长 | |
---|---|---|---|
目标 | 3000行 | 30篇 | |
第十一周 | 600/300 | 2/2 | |
第十二周 | 600/300 | 2/2 |