标签:杂类 温习 二维 signal函数 signal 数据类型 体会 第十周 sign
C语言中变量的声明包括两个部分:
类型
声明符
对于简单类型,声明并不会对代码产生多大的阅读障碍,而对于复杂类型的识别,可以采用右左右左法进行判断。
定义 int (*p)[n];
()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。
如要将二维数组赋给一指针,应这样赋值:
int a[3][4];
int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。
p=a;//将该二维数组的首地址赋给p,也就是a[0]或&a[0][0]
p++; //该语句执行过后,也就是p=p+1;p跨过行a[0][]指向了行a[1][]
定义 int *p[n];
这里int *p[3] 表示一个一维数组内存放着三个指针变量,分别是p[0]、p[1]、p[2] 所以要分别赋值。
还需要说明的一点就是,同时用来指向二维数组时,其引用和用数组名引用都是一样的。
比如要表示数组中i行j列一个元素: (p[i]+j)、(*(p+i)+j)、((p+i))[j]、p[i][j],优先级:()>[]>
在C语言中,一个函数总是占用一段连续的内存区,而函数名就是该函数所占内存区的首地址.我们可以把函数的这个首地址(或称入口地址)赋予一个指针变量,使该指针变量指向该函数.然后通过指针变量就可以找到并调用这个函数.我们把这种指向函数的指针变量称为“函数指针变量”.
函数指针变量定义的一般形式为:
类型说明符 (*指针变量名)();
1.从变量名开始,先右再左地,交替地一个一个向外看,在纸上写下:“变量是”
2.若向右遇到左圆括号,在纸上写下:“函数,参数是”,并用同样的方法处理括号中每一个参数——在纸上写下:“返回”
3.若向右遇到方括号,在纸上写下:“数组,长度为{方括号的内容},元素类型为”
4.若向右遇到右圆括号,什么也不做
5.若向左遇到*,在纸上写下:“指针,指向”
6.若向左遇到任何类型,在纸上写下对应的类型名
man -k signal
进行检索相关函数:由图可知,SIG_DFL是默认信号的处理程序,表示无返回值的函数指针,指针值为0
sigdemo2.c代码如下所示:
SIG_IGN
是忽略信号,也就是当键盘输入一个Ctrl+C
中断指令时,程序会将其忽略,而改成SIG_DFL
后,恢复成了默认的状态,输入中断指令后,自然程序也就中断了。signal的问题:
不知道信号被发送的原因
信号处理过程中不能安全地阻塞其他信号
sigaction的问题:
在信号处理程序被调用时,系统建立的新信号屏蔽字会自动包括正被递送的信号。因此保证了在处理一个给定的信号时,如果这种信号再次发生,那么它会被阻塞到对前一个信号的处理结束为止
响应函数设置后就一直有效,不会重置
sleep()的实现应该分为三步:
本周主要学习了视频内容,复习了第九、十、十一周的代码。我发现好多东西虽然学过了,但是过段时间就会忘记,所以复习是很必要的!之前由于每周的学习任务都比较重,所以有些代码没有更细致的去理解分析,这周的时间正好可以拿来复习巩固之前学过的东西,正所谓“温故而知新,可以为师矣”,通过不断温习,之前的基础也会更加扎实!
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/2 | 20/20 | |
第二周 | 58/58 | 1/3 | 20/40 | |
第三周 | 150/208 | 1/4 | 22/62 | |
第五周 | 150/358 | 1/5 | 21/83 | |
第六周 | 136/494 | 1/6 | 25/108 | |
第七周 | 115/609 | 2/8 | 24/132 | |
第八周 | 0/609 | 2/10 | 22/154 | |
第九周 | 109/718 | 3/13 | 20/174 | |
第十周 | 472/1190 | 1/14 | 21/195 | |
第十一周 | 1883/3073 | 3/17 | 21/216 | |
第十二周 | 0/3073 | 2/19 | 20/236 |
20145326蔡馨熠《信息安全系统设计基础》第12周学习总结
标签:杂类 温习 二维 signal函数 signal 数据类型 体会 第十周 sign
原文地址:http://www.cnblogs.com/cxy1616/p/6130919.html