总结(二)

1.c++如何调用c语言函数
由于C++和C的编译器生成函数的机制不一样,所以要使用extern “C”修饰符:
第一种方法

extern "C"
{
    void A();
    void B();
    ……
}

如果加上C++预处理器的名字区分是编译C还是C++文件,则为

#ifdef __cplusplus  
extern "C" {  
#endif    
void DeleteStack(Stack stack);  
void PrintStack(Stack stack);  
void Pop(Stack stack);    
#ifdef __cplusplus  
}  
#endif 

如果是头文件,则为

extern "C"
{
    #include "Stack.h"; 
    ……
}

2.c++代码是如何从源代码到可执行文件的
具体见http://www.cnblogs.com/Goldworm/archive/2012/05/21/2511910.html
源代码->预处理->编译->优化->汇编->链接->可执行文件

  • 预处理:宏定义指令、条件编译指令、头文件包含指令、特殊符号
  • 编译阶段:确定所有指令复合语法规则后翻译成中间代码或者汇编
  • 优化阶段:一种与硬件无关,另一种与硬件结构相关
  • 汇编过程:将汇编语言翻译成机器指令
  • 链接程序:将有关的目标文件彼此相连接

3.tcp三次握手
三次握手过程
如图为三次握手的过程。为什么需要三次握手?
为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。

4.tcp四次撒手
四次撒手的过程
为什么需要四次
TCP是全双工模式,这就意味着,当主机1发出FIN报文段时,只是表示主机1已经没有数据要发送了,主机1告诉主机2,它的数据已经全部发送完毕了;但是,这个时候主机1还是可以接受来自主机2的数据;当主机2返回ACK报文段时,表示它已经知道主机1没有数据发送了,但是主机2还是可以发送数据到主机1的;当主机2也发送了FIN报文段时,这个时候就表示主机2也没有数据要发送了,就会告诉主机1,我也没有数据要发送了,之后彼此就会愉快的中断这次TCP连接。

5.堆和栈的区别(稍后补充)
堆一般是由程序分配释放,
栈是系统自动分配的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值