SQ每日练习(三)

  • Post author:
  • Post category:其他



选择题


1.


B   静态链表用数组模拟链表,使用数组下标表示指针


2.


D   线程是进程的组成部分,线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.


3.


B



选择题4:C   TCP协议将应用层的字节流分成多个字段



选择题5:D     不一一叙述




简答题1:简述数组与指针的区别?


答:数组是一连续的记忆体区块,必须要先决定配置容量和存放的资料型态。


当数组作为函数的参数进行传递时,数组就自动退化为通指针类型


指针是指针变量的简称,这个变量存放的地址值,是可以改变的;




简答题:


2.const 含义:限定一个变量不允许被改变,产生静态作用


作用:const作用:定义常量、修饰函数参数、修饰函数返回值三个作用。


被Const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。


(1)修饰普通变量 const无论是放在数据类型的前面还是后面,都是将变量饰为常量


(2)和指针变量结合使用,从constk开始往右看,先遇到*p则*p不可以被改变,先遇到p,p不能被改变


3.const与#define相比,有何优点


①define只是简单的字符串替换,没有类型检查。而const有对应的数据类型,是要进行判断的,可以避免一些低级的错误。


②const常量可以进行调试的,define是不能进行调试的,因为在预编译阶段就已经替换掉了




4.





什么是预编译



预编译就是指程序执行前的一些预处理工作,

主要指#表示的。





何时需要预编译



1.


总是使用不经常改动的大型代码体。

2.

程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。



两种格式区别




编辑


文件包含有两种格式,分别是:


#include”file”





#include <file>


这两格式的区别在于:


1.


使用双引号,系统首先到当前目录下查找被包含的文件,如果没找到,再到系统指定的





包含文件目录





(由用户在配置环境时设置)去找。


2.


使用尖括号:直接到系统指定的





包含文件目录





去查找。


通常使用双引号比较保险









文件包含文件包含优点




编辑


一个大程序,通常分为多个模块,并由多个



程序员



分别编程。有了文件包含处理功能,就可以将多个模块共用的数据(如符号常量和数据结构)或函数,集中到一个单独的文件中。这样,凡是要使用其中数据或调用其中函数的程序员,只要使用文件包含处理功能,将所需文件包含进来即可,不必再重复定义它们,从而减少重复劳动和定义不一致造成的错误。









文件包含例子




编辑


文件


F1.c



?


1


2


3


4


5


#define PI 3.1415926



#define R 3



#define S PI*R*R


文件


F2.c



?


1


2


3


4


5


6


7


8


9


10


11


12


13


#include “F1.c”



#include “stdio.h”



main()



{





float




area=0;





printf(“area=%f\n”,S);



}





VC++6.0


的运行结果为:



?


1


area=28.274333









文件包含文件包含特点




编辑


文件包含的特点:





编译预处理时,预处理程序将查找指定的被包含文件,并将其复制插入到


#include


命令出现的位置上








常用在文件头部的被包含文件,称为





标题文件











头部文件





,常以


“h”(head)


作为后缀,简称头文件。在头文件中,除可包含宏定义外,还可包含外部变量定义、结构类型定义等。





一条包含命令,只能指定一个被包含文件。如果要包含多个文件,则要用多条包含命令。例如,文件


f1.h


中要使用到文件


f2.h


和文件


f3.h


的内容,则可在文件


f1.h


中用两个文件包含命令分别包含文件


f2.h


和文件


f3.h


,即在文件


f1.h


中定义:





#include”f2.h”



#include”f3.h”



在使用多个


#include


命令时,顺序是一个值得注意的问题。上例中,如果文件


f1.h


包含文件


f2.h


,而文件


2


要用到文件


f3.h


,则在


f1.h





#include


定义的顺序应该是:





#include”f3.h”



#include”f2.h”



这样文件


f1.c


和文件


f2.h


都可以使用文件


f3.h


的内容。





文件包含可以嵌套,即被包含文件中又包含另一个文件。例如,文件


f2.h


中要使用到文件


f1.h


的内容,文件


f3.h


要使用到文件


f2.h


的内容,则可在文件


f2.h


中用


#include”f1.h”


命令,在文件


f3.h


中用


#include”f2.h”


命令,即定义如下:





文件


f1.h








{




……



}



文件


f2.h








#include”f1.h”



intmax()



{




……



}



文件


f3.h








#include”f2.h”



main



{




……



}


#include


命令一般用来把


C


语言提供的标准库头文件(如


stdio.h





math.h


)包含到程序中。程序员也可以自己定义一个头文件,写入一些常用的函数原型、宏定义、结构和联合类型定义等,然后将它包含到程序中。例如:


#include”stdio.h”


(标准输入


/


输出函数库)


#include”math.h”


(数学函数库)


#include”stdlib.h”


(常用函数库)


#include”string.h”


(字符串处理函数库)








int a[5] : {1,2,3,4,5};

数组名a代表整个数组的地址,其值与数组中第一个元素的地址相同。

a+1相当于一个指向数组a的指针往后位移一个元素的距离。

*+(指针)== 指针指向地址中的内容。

printf( “%d”, *(a+1)) === 2;

&a为整个数组的地址+1后,相当于一个指向数组a的指针往后位移整个数组的距离。即int* ptr = (int*)(&a+1);

ptr-1是指针ptr往前移动一个单位(int型指针,移动单位为4字节)。

最后指向数组中的5。

printf(“%d”, *(ptr-1));===5




第二题:

主函数中调用了abc函数,将字符串str的地址传给了abc函数,

在abc函数中,利用a做字符数组str的下标,遍历字符串,将字符串中不是字符‘c’的其余字符,利用循环,重新赋值给字符数组str中下标为b的数组元素。




版权声明:本文为cool_saddly原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。