C/C++
十五、 选择结构
任何简单或复杂的算法都可以由顺序结构、选择结构(又叫分支结构,有单分支,双分支,多分支)和循环结构这三种基本结构组成。
顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。
选择结构用于判断给定的条件,根据判断的结果判断某些条件,根据判断的结果来控制程序的流程。
循环结构是指在程序中需要反复执行某个功能而设置的一种程序结构。它由循环体中的条件,判断继续执行某个功能还是退出循环。根据判断条件,循环结构又可细分为以下两种形式:先判断后执行的循环结构和先执行后判断的循环结构。
十六、 数据类型所占存储空间
在16位的PC中,char类型占1个字节,int占2个字节,long int占4个字节,float占4个字节,double占8个字节。
十七、 回调函数
回调函数是一个函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。
函数是一种特殊的数据类型。
十八、 setw()函数
setw(int n)是c++中在输出操作中使用的字段宽度设置,设置输出的阈宽,n表示字段宽度。只对紧接着的输出有效,紧接着的输出又变回默认的域宽。
头文件为<iomanip>
iomanip的作用:
主要对cin,cout之类的一些操纵算子,比如setfill,setw,setbase,setprecision等等。它是I/O流控制头文件,就像C里面的格式化输出一样。
十九、 fork函数
fork函数是UNIX或类UNIX中的交叉函数,fork函数将运行着的程序分成2个(几乎)完全一样的进程,每个进程都启动一个从代码的同一位置开始执行的线程。这两个进程中的线程继续执行,就像是两个用户同时启动了该应用程序的两个副本。
fork系统调用用于创建一个新进程,称为子进程,它与进程(称为系统调用fork的进程)同时运行,此进程称为父进程。创建新的子进程后,两个进程将执行fork()系统调用之后的下一条指令。子进程使用相同的pc(程序计数器),相同的CPU寄存器,在父进程中使用的相同打开文件。
它不需要参数并返回一个整数值。下面是fork()返回的不同值。
负值:创建子进程失败。
零:返回到新创建的子进程。
正值:返回父进程或调电者。该值包含新创建的子进程的进程ID
例:
int main(){
printf(“hello”);
fork();
printf(“hello”);
}
/* 其中字符串“hello”会被执行4次 */
解析:
- fork()函数会把它所在的语句以后的语句复制到一个子进程里,单独执行。
- 如果printf函数最后没有“\n”,则输出缓冲区不会被立即清空,而fork函数就会把输出缓冲区里的内容也都复制到子进程里。
所以,父进程和子进程各输出2个hello,共4个。
如果第一个printf(“hello”); 写成printf(“hello\n”); ,则只会输出3个hello,父进程2个,子进程1个。
二十、 在定义int a[2][3]; 下面对a的引用正确的是(A,C)?
A a[0][2]
B a[1,3]
C a[1>2][!1]
D a[2][0]
解析:定义了a由2行3列,0、1行,0、1、2列,其中C为a[0][0]。