C++知识学习
小强19920310
这个作者很懒,什么都没留下…
展开
-
C++头文件编译:#pragma once和#ifndef
#pragma once是编译器相关的,有的编译器支持,有的编译器不支持,具体情况请查看编译器API文档,不过现在大部分编译器都有这个杂注了。#ifndef,#define,#endif是C/C++语言中的宏定义,通过宏定义避免文件多次编译。所以在所有支持C++语言的编译器上都是有效的,如果写的程序要跨平台,最好使用这种方式。#ifndef的方式依赖于宏名字不能冲突,这不光可以保证同一个文件不会被...原创 2018-03-05 22:40:36 · 551 阅读 · 0 评论 -
C++中字符串反转
一:#include <iostream> using namespace std; void Reverse(char *s) { int n = strlen(s); for (int i = 0, j = n - 1; i<j; i++, j--) { char c = s[i]; s[i] = s[j]; s[j] = c; } } int ma...原创 2018-03-03 16:46:25 · 426 阅读 · 0 评论 -
static和const
static关键字至少有下列n个作用: (1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值; (2)在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问; (3)在模块内的static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内; (4)在...原创 2018-03-11 21:44:04 · 103 阅读 · 0 评论 -
宏
宏实际上就是简单的替换,编译器在编译时完成简单的宏定义有如下格式:[#define指令(简单的宏)] #define 标识符替换列表(1)简单替换:数组个数的替换#define N 55(注意:无分号)则以后在程序中遇到N都将其替换为55(2)转换字符串#define String(x) # xprintf(String(""""""));将String()里的字符串X原样输出(3)#defi...原创 2018-03-11 22:10:56 · 197 阅读 · 0 评论 -
利用递归返回数组中的最大值
int theMax(int a[],int n) { int t; if(n>1) { t=f(a,n-1); return t>a[n-1]?t:a[n-1]; } else return a[0]; }原创 2018-03-16 22:04:40 · 637 阅读 · 0 评论 -
C++内存管理总结
内存分配方式:堆,栈,自由存储区,全局区,常量存储区栈:函数内部的局部变量,函数形参等,自动创建自动释放堆:由new delete运算符创建和释放,或者程序结束后os自动回收自由存储区:标准库函数malloc分配的空间全局区:全局变量和静态变量存储的区域常量存储区:存常量,此区域数据不允许被修改,一些字符串常量等放在这里堆和栈的区别:(1)管理方式堆:用户动态创建,用户释放,忘记释放会产生内存泄漏...原创 2018-03-13 22:36:08 · 324 阅读 · 0 评论 -
C++中const和define区别
const用来定义场量(常量指针,常量值,常量引用,函数参数,函数返回值等)。const变量必须在定义时初始化,而且类中的const变量必须在初始化列表中初始化。(1)const在编译阶段起作用,可以进行调试。#define在预编译阶段起作用,简单替换,不能进行调试(2)const有类型检查,#define无类型检查,const安全程度高(3)编译器不为const变量分配空间而是将其存储在符号表中...原创 2018-03-13 21:26:03 · 483 阅读 · 0 评论 -
编写一个函数,作用是把一个char组成的字符串循环右移n个。比如原来是“abcdefghi”如果n=2,移位后应该是“hiabcdefg” 函数头是这样的:
void Loopover(char *str,int steps){int len=strlen(str);char tmp[len+3];strcpy(tmp,str+len-steps);strcpy(tmp+2,str);tmp[len]='\0';strcpy(str,tmp);}原创 2018-03-11 21:11:51 · 3243 阅读 · 1 评论 -
C++中lambda表达式
声明Lambda表达式 Lambda表达式完整的声明格式如下: [capture list] (parameter list) mutable exception-> return type { function body } capture list:捕获外部变量列表params list:形参列表mutable指示符:用来说用是否可以修改捕获的变量exception:异常设定转载 2018-02-05 21:30:11 · 99 阅读 · 0 评论 -
C++中lambda表达式
声明Lambda表达式Lambda表达式完整的声明格式如下:[capture list] (parameter list) mutable exception-> return type { function body }capture list:捕获外部变量列表params list:形参列表mutable指示符:用来说用是否可以修改捕获的变量exception:异常设定return ty...转载 2018-02-05 21:34:27 · 145 阅读 · 0 评论