C语言复习基础(1)

1,程序执行过程:编辑->编译->链接->加载->执行;

编译:词法分析器->语法分析器->代码生成器-----生成目标程序;

链接:把散乱目标程序,链接在一起 ;

加载:是加载已经执行的文件,避免重新编译,连接---得到.exe文件

 

2,1个字节8个位,Char 1;int 2;long int ,float 4; double 8;

字符用单引号,'a' ,3,'3', a 的区别;'a'占一个字节,a为变量;3为整型 占两个字节,'3'为字符型 占一个字节;

字符串用双引号(后面自动加\0作为结尾) :“world” 为6个字节;

 

printf(“%m.n”,sizeof(int a)) :m->表示输出值得整体数长度,n->表示输出值小数点几位;

 

 

3,条件运算符(3目运算符) 表达式1?表达式2:表达式3;1为真则2,1为假则为3;

 

 

4,逗号表达式:  b=(3*5,4+6) ,b=10;

 

5,a=a+b<<==>>a+=b;

 

6,scanf("%3d",&a);表示输入的整型宽度不为3,如果输入时长于3则截取前3位数字;

 

scanf("%ld",&a);scanf("%hd",&a);分别输入长整型,短整型;

scanf("%d%*d%d); 跳过中间的输入数字;scanf("%d%*c%c") 输入10 r  避免输入空格;

 

  int 1=1234,printf("%*d",5,i);宽度为5;

 

7.函数递归: 直接递归(调用本函数)        间接递归(两个以上函数互相调用)

 

8.预处理(编译前):   宏定义:#define   PI    3.14

                                                   #undef   PI

                                     文件包含: <stdio.h> 尖括号 的文件在标准目录中

                                                          "stdio.h" 在指定路径中, 若为指定则当前路径,若找不到,则在标准目录中寻找;

 

字符的输入输出

     scanf("%c",&char)                                   printf("%c",char)

     char=getc(stdin)                                 putc(char,stdout)   

     char=getch() /输入时屏幕不显示输入的值     putch(char)

     char=getchar() 从缓存区获取输入值             putchar(char)

例子: void main(){ 

     char m_char,m_char2;

m_char=getc(stdin);

putc(m_char,stdout);

m_char2=getchar();

putchar(m_char2)}   输入:A "回车键"     输出值:A" 换行"                  原因:m_char 获取A, m_char2获取到了缓存区的“回车键"所以有换行输出

 

9:联合体数据类型: union  men{

           int v;

           float  t;

             }

union 数据类型与 数据结构的区别:联合体数据类型只能取里面的一个数据类型,如果多取,取最后一个;

10:枚举数据类型: enum mon{jan,jan1,jan2,jan3}  依次赋值0,1,2,3

一、6.MFCCString是类型安全类么?为什么?

答:不是,其它数据类型转换到CString可以使用CString的成员函数Format来转换 ;

 

二、conststatic的二者的区别? 引用与指针有什么区别?全局变量和局部变量在内存中是否有区别?如果有,是什么区别? 

 答:1、static 用来控制变量的存储方式和可见性,静态存储;const 类似取代预处理(#define max 100),同时消除了预处理不能享受c++严格类型检查的缺点;

    2、1) 引用必须被初始化,指针不必。
           2) 引用初始化以后不能被改变,指针可以改变所指的对象。
           3) 不存在指向空值的引用,但是存在指向空值的指针。 

   3、全局变量储存在静态存储区,局部变量在堆栈 

 三、什么是平衡二叉树?什么函数不能声明为虚函数? Internet物理地址和IP地址转换采用什么协议? 

答:1、左右子树都是平衡二叉树 且左右子树的深度差值的绝对值不大于1 

2、构造函数

3、ARP (Address Resolution Protocol)(地址解析协议)

四、某32位系统下, C++程序,请计算sizeof 的值(5).

 char str[] = http://www.baidu.com/

 char *p = str  

 

请计算  sizeof (str ) = ?(1

 sizeof ( p ) = ?(2) 

Sizeof(*p)=? (3)

 

 char sq[100];

sizeof(sq)=?(4)

void   fun  ( char sq[100]){ 

请计算 

 sizeof( sq ) = ?(5) 

}  

 

void *p = malloc( 100 ); 

请计算  sizeof ( p ) = ?(6) 

 

 答:(122 23) 4  (4)100 564   

五、TCP/IP 建立连接的过程?(3-way shake) 

答:在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。   第一次握手:建立连接时,客户端发送syn(syn=j)到服务器,并进入SYN_SEND状 态,等待服务器确认;  第二次握手:服务器收到syn包,必须确认客户的SYNack=j+1),同时自己也发送一个 SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;   第三次握手:客户端收到服务器的SYNACK包,向服务器发送确认包ACK(ack=k+1) ,此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。 

七、动态连接库的两种方式?  

答:调用一个DLL中的函数有两种方法:  1.载入时动态链接(load-time dynamic linking),模块非常明确调用某个导出函数  ,使得他们就像本地函数一样。这需要链接时链接那些函数所在DLL的导入库,导入库向 系统提供了载入DLL时所需的信息及DLL函数定位。  2.运行时动态链接(run-time dynamic linking),运行时可以通过LoadLibraryLoa  dLibraryEx函数载入DLLDLL载入后,模块可以通过调用GetProcAddress获取DLL函数的  出口地址,然后就可以通过返回的函数指针调用DLL函数了。如此即可避免导入库文件了 。

 

 

 

     

 

          

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值