C语言学习 第十次作业总结

时间:2021-01-05 21:32:01

同学们终于学到最有意思的东西:指针了。有人说指针是C语言的灵魂。虽然有点夸大,但是事实的确是如此。很多的时候,使用指针,会让过程变得简洁和精巧。这个在以后同学们深入学习使用C语言进行编程的时候就可以理解了。

下面还是按照往常的样子,进行本次知识点的总结:

  • 需要知道,指针本身也是一个变量,在内存中仅仅是存储一个数据,只是这个数据很恰好是一个地址而已;

  • 指针起到一个指向的作用,通过解引用*可以很方便的得到指向目标的内容

  • 一定要记住指针的几种形态:

// 声明
int *pa;        // 声明一个名为 p 的指针,需要注意的是,* 号本身仅仅表示 p 是一个指针变量
int a;
// 定义 == 赋值
p = &a;         // 将 p 的内存空间中的数据定义为 a 的地址
// 声明且定义
int b;
int *pb = &b;
// 有一个函数,参数是一个指针
int *pa = &a;
int *pb = &b;
int func(int *a,int*b,int *c,int *d);
func(pa,pb,&a,&b);      // 函数调用时传入的实参
// 数组和指针的关系
int a[10];
int *parr = a;          // 数组名就是数组的地址,也是数组元素 0 的地址

在 C 语言中,数组和指针的界限并不明显,比如在向函数传参的时候,即使你写成

int func(int a[3]){}    // 甚至这里写下了数组的长度

但是实际上这里编译器会视作你传递进去int *a的指针,对于一个指针而言,并不能有效的知道它的长度。这就是为什么多数情况下看到的函数,一旦传递入一个指针作为数组的首地址,都会跟随一个int类型的数值作为长度。

指针,务必需要注意,一定要先初始化即定义/赋值后再使用,否则,编译器无法知道你到底想要操作的是哪块内存区域:

int *p;
*p = 0;     // error

不过万幸的是,大部分类似于这样的错误,在运行的时候,都会出现非常明显的错误。但是同学们依旧应该对此情况多多用心。

谈到这里,忽然想要跟大家聊聊野指针,可是忽然想到大家都还没有学习过诸如malloc这样的函数,那还是暂时作罢吧。不过类似上面的p就是一个野指针(即它没有指向一个明确的内存区域)。

以下为本次成绩

编号 学号 Cnblogs昵称 代码 总结 附加题 加权得分 备注
1 160809401 付胤 50 85 64 总结错别字较多,代码完成度低
2 160809402 张博洋 -100 -100 -100 总结不是总结,代码不是代码
3 160809403 董宇豪 90 60 78 总结写的过少,一些必要的点没有写到
4 160809404 朱念齐 -100 -100 -100 没有写
5 160809405 芦彦儒 -100 -100 -100 没有写
6 160809406 吴泽轩 0
7 160809407 Leonardo#* -100 -100 -100
8 160809408 iL.linker 100 100 100
9 160809409 gdcs16_409 95 95 95
10 160809410 无声的梦 100 40
11 160809411 刘悦 -100 -100 -100
12 160809412 张磊 90 36
13 160809413 王洪烨 110 90 102 注意到检查传入函数的指针是否为空
14 160809414 纪柏如 110 44 “说明符”这一概念很有意思
15 160809415 闫墨杰 110 100 106
16 160809416 史航 110 95 104 终于有人用强制类型转换了
17 160809417 狂欢 90 -100 14 没有写总结
18 160809418 水母Jam -100 -100 -100
19 160809419 朱钰铖 -100 -100 -100
20 160809420 虞小生 60 90 72
21 160809421 饮冰少年1 100 -100 20
22 160809422 0
23 160809423 李筱 -100 -100 -100
24 160809424 Xzy! 65 90 75
25 160809425 刹那神华 -100 100 -20
26 160809426 zlt.Santorini'Ly 95 95 95 总结细致
27 160809427 江超民 95 90 93
28 160809428 zxkai 95 -100 17
29 160809429 王鑫沐 95 95 95
30 160809430 茉妍 95 95 95
31 160809431 茉莉雨 95 110 101