自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

linux_Allen的博客

失群亦是合群时

  • 博客(20)
  • 收藏
  • 关注

原创 整数转字符串(十进制/十六进制)

代码来自:陈硕muduo库#include <stdio.h>#include <algorithm>#include <stdint.h> const char digits[] = "9876543210123456789"; const char* zero = digits + 9; const char digitsHex[] =...

2018-03-27 18:45:29 1594

转载 C99 可变数组LVA

C90及C++的数组对象定义是静态联编的,在编译期就必须给定对象的完整信息。但在程序设计过程中,我们常常遇到需要根据上下文环境来定义数组的情况,在运行期才能确知数组的长度。对于这种情况,C90及C++没有什么很好的办法去解决(STL的方法除外),只能在堆中创建一个内存映像与需求数组一样的替代品,这种替代品不具有数组类型,这是一个遗憾。C99的可变长数组为这个问题提供了一个部分解决方案。可变长数...

2018-03-26 17:23:21 336

原创 9. c++中的const,引用和指针

const常量的判别标准只有用字面量初始化的const常量才会进入符号表使用其他变量初始化的const常量仍然是只读变量被volatie 修饰const常量不会进入符号表 在编译期间不能确定初始值的const标识符,都被作为只读变量处理 const引用的类型和初始化变量的类型相同:初始化成为只读变量不同:生成一个==新的==只读变量char c = 'c';...

2018-03-23 22:27:49 166

原创 8. c++ 的强制类型转换

c方式的强制类型转换存在的问题 过于粗暴 任意之间都可以进行转换,编译器很难判断其正确性难于定位 - 在源码中无法快速定位所有使用强制类型转换的语句c++的强制类型转换分为四种 static_castconst_castdynamic_castreinterpret_cast 用法: xxx_cast(Expression) static_c...

2018-03-23 22:26:56 194

原创 7. 动态内存分配和命名空间

c++中的动态内存分配c++中通过new关键字进行动态内存申请c++中的动态内存申请是基于类型的delete关键字用于内存释放变量申请Type* pointer = new Type;delete pointer;数组申请Type* pointer = new Type[N];delete[] pointer;动态内存分配示例#include &l...

2018-03-23 22:24:13 186

原创 6. c++和c的相互调用

c++ 编译器能够兼容C语言的编译方式c++ 编译器会优先使用c++编译的方式extern关键字会强制让c++编译器进行c方式的编译extern "C"{#include "c.h" //c方式编译出来的c.c 调用c.c中的f();}int main(void){ f(); return 0;}为了保证一段c代码只会以c的方式编译(上面...

2018-03-23 22:23:46 143

原创 5. 函数重载

函数重载函数重载至少满足下面的一个条件 参数个数不同参数类型不同参数顺序不同函数默认参数遇上函数重载的问题#include <stdio.h>int func(int a, int b, int c = 0){ return a * b * c;}int func(int a, int b){ return a + b;}in...

2018-03-23 22:23:05 168

原创 POLL

pollpoll是Linux中的字符设备驱动中的一个函数。Linux 2.5.44版本后,poll被epoll取代。和select实现的功能差不多,poll的作用是把当前的文件指针挂到等待队列。#include <poll.h>int poll(struct pollfd fds[], nfds_t nfds, int timeout);参数说明: fds:是...

2018-03-23 22:22:13 201

原创 printf输出带颜色字符串

printf("\033[字背景颜色;字体颜色m字符串\033[0m" );颜色代码:QUOTE:字背景颜色范围: 40--49 字颜色: 30--39 40: 黑 30: 黑 41: 红 ...

2018-03-22 09:07:16 1375

原创 4. 函数参数的默认值

c++中可以在函数==声明==的时候为参数提供一个默认值当函数调用时没有提供参数的值,则使用默认值 参数的默认值必须在函数的声明中指定(在定义处指定 编译报错)#include <stdio.h>int mul(int x = 0);int main(int argc, char *argv[]){ printf("%d\n", mul()); ...

2018-03-22 08:39:59 336

原创 3. 内联函数

c++中推荐使用内联函数替代宏代码片段c++中使用inline关键字声明内联函数内联函数声明时,==inline关键字必须和函数定义结合在一起==,否则编译器直接忽略内联请求。c++编译器直接将内联函数体插入调用的地方,所以他没有普通函数调用事的额外开销(压栈,跳转,返回)内联函数会进行参数检查,返回类型等函数的内联请求可能会被拒绝现代c++编译器能够进行编译优化,一些函数即使没有...

2018-03-20 12:34:22 134

原创 2. 引用

引用可以看作一个已经定义变量的别名与原变量在同一片内存空间引用语法: type& name = var;int a = 4;int& b = a; //b为a的别名b = 5; //操作b就是操作a引用传递数组fun(int (&array)[10]); 普通引用在定义时必须用同类型变量进行初始化。...

2018-03-20 12:33:52 114

原创 1. c到c++的升级

变量定义c++所有变量都可以在需要使用时再定义,C语言所有变量都必须在作用域开始的位置定义register关键字register关键字请求编译器将局部变量存储在寄存器中c++中依旧支持register关键字(只是为了兼容C语言)c++编译器有自己的优化方法 C语言中无法取得register变量的地址c++中可以取得register变量的地址(对现代编译器registe...

2018-03-20 12:33:10 125

原创 变量默认初始化问题

全局变量,静态变量(局部/全局) 不初始化,默认初始化为0int a;int main(){ static int b; std::cout << a; //0 std::cout << b; //0}局部变量 不初始化, 则为随机数int main(){ int a; std::cout &lt...

2018-03-20 12:32:10 826

原创 动态内存分配

动态内存分配C语言中一切操作都是基于内存的变量和数组都是内存的别名内存分配由编译器在编译期决定定义数组的时候必须指定数组长度数组长度是在编译器就必须确定的程序在运行的过程中,可能会使用一些额外的内存空间,需要通过malloc 和 free malloc所分配的是一块连续内存,以字节为单位,并且不带任何的类型信息 malloc实际分配的内存可能会比请...

2018-03-20 12:31:19 170

原创 递归函数

递归函数是一种数学上分而治之的思想递归需要边界条件 当边界条件不满足是,递归继续进行 当边界条件满足时,递归停止 递归函数必须有递归出口,无限递归会导致程序栈溢出而崩溃 示例代码//求字符串长度#include <stdio.h>int strlen_r(const char* s){ if( *s ) ...

2018-03-20 12:30:33 208

原创 函数参数(可变参数)

函数参数函数参数在本质上和局部变量相同在栈上分配空间函数参数的初始值是函数调用时的实参值函数参数的求值顺序依赖于编译器的实现int k = 1;printf("%d, %d \n",k++,K++);//gcc 编译器输出 2,1//这个是不确定的顺序点程序中存在一定的顺序点顺序点是执行过程中修改变量值的最晚时刻在程序到达顺序点的时候,之前所做的一切操作...

2018-03-20 12:29:59 242

原创 野指针(内存操作的问题及规范

函数指针- 指针变量中的值非法的内存地址,进而形成野指针 - 野指针不是NULL指针,是指向不可用内存地址的指针 - C语言无法判断一个指针所保存的地址是否合法野指针的由来局部指针变量==没有初始化==指针所指向的变量==在指针之前被销毁==使用已经释放过的指针进行了错误的指针运算进行了==错误的强制类型转换==代码示例:#include <stdio...

2018-03-20 12:29:21 276

原创 多维数组和多维指针(数组参数和指针参数)

二维数组与二级指针二维数组在内存中以一维数组的方式排布int m[2][3] m的类型为int(*)[3]c语言中数组参数会退化为指针 数组参数 – 等效的指针参数 float a[5] – float* a int* a[5] — int** a char a[3][5] — char (*a)[5]多维数组参数...

2018-03-20 12:28:00 271

原创 数组指针和指针数组

数组的类型由元素类型何数组大小共同决定int array[5]的类型为 int[5],不是 int型c语言中为数组类型重命名typedef type(name)[size]typedef int(INTT5)[5]INTT5 iarray;数组指针数组指针用于指向一个数组数组名是代表数组首元素的地址,但是不是数组的起始地址,==通过取址符&作用于数组...

2018-03-20 12:27:02 127

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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