(o゚▽゚)o 欢迎

不积跬步无以至千里,愿与君共勉!

在C++程序中调用被 C 编译器编译后的函数库,为什么要加 extern “C”声明?

C++提供了C 连接交换指定符号extern“C”来解决名字匹配问题。 C++语言支持函数重载,C 语言不支持函数重载。函数被C++编译后在库中的名字。与C 语言的不同。假设某个函数的原型为: void foo(int x, int y); 该函数被C 编译器编译后在库中的名字为_foo ...

2018-01-30 16:41:36

阅读数:90

评论数:0

什么是预编译?何时需要预编译?

什么是预编译: 预编译又称为预处理 , 是做些代码文本的替换工作。 处理以# 开头的指令 , 比如拷贝 #include 包含的文件代码,#define 宏定义的替换 , 条件编译等,就是为编译做的预备工作的阶段。 主要处理#开始的预编译指令,预编译指令指示了...

2018-01-30 16:40:44

阅读数:235

评论数:0

关键字 const 含义、作用,与#define相比的优点

const意味着”只读” 本质:const在谁后面谁就不可以修改,const在最前面则将其后移一位,二者等效。 下面的声明都是什么意思? const int a; int const a;//前两个的作用是一样,a是一个常整型数。 const int *a;//意味着a是一个...

2018-01-30 16:40:22

阅读数:96

评论数:0

简述数组与指针的区别

1.数组是一连续的记忆体区块,必须要先决定配置容量和存放的资料型态。 当数组作为函数的参数进行传递时,数组就自动退化为通指针类型,数组名可作为指针常量。 2.指针是指针变量的简称,这个变量存放的地址值,是可以改变的; 3. int a[10]; //系统实实在在分配了10*4个字节的连续内...

2018-01-30 16:39:49

阅读数:72

评论数:0

系统调用与库函数的区别

库函数 系统调用 1 平台移植性好,不同环境使用相似 依赖于内核,不保证移植,各个操作系统使用不同 2 调用函数库 调用内核服务 3 与用户程序相联系,一个普通功能函数的调用 ...

2018-01-30 16:39:05

阅读数:50

评论数:0

内存分配及堆与栈的区别

1.内存分配方式 内存分配方式有三种:        1.从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。        2.从栈上分配。函数内的局部变量的存储单元,函数执行结束时这些存储单元自动被释放。栈内存分配运算...

2018-01-30 16:38:22

阅读数:39

评论数:0

C语言中常见的内存错误与解决方法(含野指针概念)

常见的错误       关于内存的一些知识已在内存分配中提及,现记录与分享常见的内存错误与对策。 类型 1:内存未分配成功,却使用了它。 方   法:在使用之前检查指针是否为NULL。              1)当指针p是函数的参数时,在函数入口处用语句assert(p!=NULL)进...

2018-01-30 16:35:51

阅读数:62

评论数:0

sizeof 和 strlen 的区别

1.sizeof是操作符,strlen是函数。 2.在计算字符串数组的长度上有区别,例如: char str[20] = "0123456789"; int a = strlen(str);//a=10; int b = sizeof(str);//而b=20; a ...

2018-01-30 16:34:40

阅读数:48

评论数:0

C++ TCP通信

TCP通信过程: UDP通信过程: WSAStartup() 此函数在应用程序中初始化Windows Sockets DLL ,只有此函数调用成功后,应用程序才可以再调用其他Windows Sockets DLL中的API函数。在程式中调用该函数的形式如下: ...

2018-01-29 15:42:52

阅读数:360

评论数:0

网络的基本概念

网络模型 OSI层模型、TCP/IP的层模型如下所示: TCP/IP:传输控制协议/网络协议 OSI:开放式系统互联 TCP/IP各层对应的协议如下所示: 由模型可知: IP协议:对应于网络层,是网络层的协议, TCP协议:对应于传输层,是传输层的协议,主要解...

2018-01-29 15:40:38

阅读数:64

评论数:0

C++11 thread 及互斥锁、条件变量

启动的格式: #include //包含头文件 void fucntion();//定义一个线程执行的函数 thread t1(fucntion);//线程启动这个函数 //一创建就自动运行,主线程非阻塞 void factorial(int n,char...

2018-01-25 21:25:24

阅读数:599

评论数:0

C++进程、线程、多线程概念及线程的优缺点

进程: 进程是一个正在执行的程序,是向CPU申请资源的,进程之间数据相互独立,一个进程至少有一个线程。 线程: 线程是进程中的单一的顺序控制流程也可以叫做最小控制单元,线程是进程中执行单元,开启一个线程比开启一个进程更加节省资源。  多线程: 多线程是...

2018-01-25 21:24:39

阅读数:1248

评论数:0

堆和栈的主要区别

1申请方式和回收方式       stack:   由系统自动分配。   例如,声明在函数中一个局部变量 int b;   系统自动在栈中为b开辟空间       heap:    需要程序员自己申请,并指明大小,在c中malloc函数       如p1   =   (char...

2018-01-23 21:03:20

阅读数:54

评论数:1

程序的内存分配即一个由C/C++编译的程序占用的内存分为以下几个部分

一个由C/C++编译到程序占用的内存分为以下几个部分: 1、栈区(stack)——由编译器自动分配释放,在不需要的时候自动清除。用于存放函数的参数、局部变量等。操作方式类似数据结构中的栈(后进先出)。 2、堆区(heap)——一般由程序员分配释放,若程序员分配后不释放,程序结束后可能由...

2018-01-23 20:13:24

阅读数:233

评论数:0

static 全局变量、局部变量、函数与普通全局变量、局部变量、函数区别

全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。...

2018-01-23 19:57:51

阅读数:65

评论数:0

关键字static的作用

static关键字至少有下列n个作用: (1)设置变量的存储域,函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值; (2)限制变量的作用域,在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函...

2018-01-23 19:35:43

阅读数:75

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭