C/C++中关键字解释

extern:表示C++中有的方法在C中不存在,就使用extern注释兼容C/C++,extern修饰变量可以被其它文件访问

U:代表无符符号整数 例123U

L:代表长整数 例123L、124UL无符号长整数

0x:代表十六进制 0代表8进制 其余十进制

#define:定义常量 例 #define A 10 表示A=10,在C/C++中叫做宏也叫预处理。就是代码写死不变,而且所有文件都需要的可以定义为宏。

const:定义常量值不能被修改 例const int A=10

using:修饰符,被using修饰对象可以直接使用对象里面的属性和方法

signed:表示变量可以存储负数。对于整型变量来说,signed 可以省略,因为整型变量默认为有符号类型。

unsigned:表示变量不能存储负数。对于整型变量来说,unsigned 可以将变量范围扩大一倍。

short:表示变量的范围比 int 更小。short int 可以缩写为 short。

long:表示变量的范围比 int 更大。long int 可以缩写为 long。

long long:表示变量的范围比 long 更大。C++11 中新增的数据类型修饰符。

float:表示单精度浮点数。

double:表示双精度浮点数。

bool:表示布尔类型,只有 true 和 false 两个值。

char:表示字符类型。

wchar_t:表示宽字符类型,可以存储 Unicode 字符

volatile:修饰符 volatile 告诉该变量的值可能会被程序以外的因素改变,如硬件或其他线程。

restrict:由 restrict 修饰的指针是唯一一种访问它所指向的对象的方式。只有 C99 增加了新的类型限定符 restrict。

mutable:表示类中的成员变量可以在 const 成员函数中被修改。

static:用于定义静态变量,表示该变量的作用域仅限于当前文件或当前函数内,不会被其他文件或函数访问。

register:用于定义寄存器变量,表示该变量被频繁使用,可以存储在CPU的寄存器中,以提高程序的运行效率。

thread_local:使用 thread_local 说明符声明的变量仅可在它在其上创建的线程上访问。 变量在创建线程时创建,并在销毁线程时销毁。 每个线程都有其自己的变量副本。

strcpy(str1,str2):复制str2导致str1

strcat(str1,str2):连接str2到str1的末尾

strlen(str1):返回字符串str1的长度

strcmp(s1, s2):如果 s1 和 s2 是相同的,则返回 0;如果 s1s2 则返回值大于 0。

strchr(s1, ch):返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置。

strstr(s1, s2):返回一个指针,指向字符串 s1 中字符串 s2 的第一次出现的位置。

struct:定义结构体类似java的class关键字,在C++也有class定义对象,例struct Books{double title}books; books是定义的结构体名称可以定义多个也可以不定义。

friend:class修饰的类中被friend修饰的函数成为友元函数,友元函数不属于类的成员函数,友元函数可以访问类中的所有成员或者字段。例class Box{ friend void getWidth(Box box); }

inline:内联函数可以直接调用为了提升效率。以空间换时间。注:不易做for循环和复杂操作最好代码控制到1~5行内。

typedef:使用它来为类型取一个新的名字。例 typedef unsigned char BYTE; BYTE a;

virtual:class修饰的类中被virtual修饰的函数被称为纯虚函数(和java abstract 函数一样)例virtual double getWidth()=0;

new:动态分配内存,newmalloc()函数的区别在于除了动态分配内存,还会创建对象。例double *pvalue=NULL;pvalue=new double; delete pvalue 释放内存

template:模板,类似java泛型定义,例:template 定义函数的泛型,类的模板定义template

条件编译(#if #else #ifdef #endif ):全局优先处理的程序

#或者##:就是把把变量转换为字符输出 例 #concat(x) #x ,#concat(x,y) x##y,没搞懂其作用

:: 范围解析运算符,例void Box::get(){},在花括号可以访问Box中任意成员属性,在class Box定义的类中必须声明get()方法

位域:使用和结构体struct类似不过是在定义的变量后面增加:占用字节数(:2)来定义位域,例struct Books{ int name:2;}

type [member_name] : width ;定义位域方式

元素 描述
type 只能为 int(整型),unsigned int(无符号整型),signed int(有符号整型) 三种类型,决定了如何解释位域的值。
member_name 位域的名称。
width 位域中位的数量。宽度必须小于或等于指定类型的位宽度。

union:使用union关键字定义共用体,例union Books{ string title;int number; }

类的析构函数~:可以定义在被class所修饰的构造函数中前面加上~不能携带参数和返回任何值,作用就是在释放内存时会及时释放资源。类似java的内存释放

在C/C++中方法的声明类似java的抽象类中的方法,先声明后实现

位运算符作用于位,并逐位执行操作。&、 | 和 ^ 的真值表如下所示:

p q p & q p | q p ^ q
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1
运算符 描述 实例
= 简单的赋值运算符,把右边操作数的值赋给左边操作数 C = A + B 将把 A + B 的值赋给 C
+= 加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数 C += A 相当于 C = C + A
-= 减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数 C -= A 相当于 C = C - A
*= 乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数 C *= A 相当于 C = C * A
/= 除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数 C /= A 相当于 C = C / A
%= 求模且赋值运算符,求两个操作数的模赋值给左边操作数 C %= A 相当于 C = C % A
<<= 左移且赋值运算符,例c<<=2十进制后面加两个零 C <<= 2 等同于 C = C << 2
>>= 右移且赋值运算符,例c>>=2十进制后面两位直接去掉 C >>= 2 等同于 C = C >> 2
&= 按位与且赋值运算符 C &= 2 等同于 C = C & 2
^= 按位异或且赋值运算符 C ^= 2 等同于 C = C ^ 2
|= 按位或且赋值运算符 C |= 2 等同于 C = C | 2

C/C++信号捕获

使用sinal()函数来捕获信号,常规的信号类型如下

信号 描述
SIGABRT 程序的异常终止,如调用 abort
SIGFPE 错误的算术运算,比如除以零或导致溢出的操作。
SIGILL 检测非法指令。
SIGINT 程序终止(interrupt)信号。
SIGSEGV 非法访问内存。
SIGTERM 发送到程序的终止请求。

使用signal(registered signal, signal handler)来注册,registered signal:注册的信号类型SIGABRT,SIGFPE,SIGILL,SIGINT,SIGSEGV,SIGTERM,signal handler方法名称如下例子

raise()函数:用来生成信号类,参数有SIGABRT,SIGFPE,SIGILL,SIGINT,SIGSEGV,SIGTERM

pthread_create :创建多线程pthread_create (thread, attr, start_routine, arg)

pthread_exit:终止线程当线程里面的任务执行完不需要线程时通过pthread_exit来终止释放

参数 描述
thread 指向线程标识符指针。线程ID
attr 一个不透明的属性对象,可以被用来设置线程属性。您可以指定线程属性对象,也可以使用默认值 NULL。
start_routine 线程运行函数起始地址,一旦线程被创建就会执行。需要执行的函数名称
arg 运行函数的参数。它必须通过把引用作为指针强制转换为 void 类型进行传递。如果没有传递参数,则使用 NULL。,执行的函数参数

C/C++容易模板组件

组件 描述
容器(Containers) 容器是用来管理某一类对象的集合。C++ 提供了各种不同类型的容器,比如 deque、list、vector、map 等。
算法(Algorithms) 算法作用于容器。它们提供了执行各种操作的方式,包括对容器内容执行初始化、排序、搜索和转换等操作。
迭代器(iterators) 迭代器用于遍历对象集合的元素。这些集合可能是容器,也可能是容器的子集。

上面几个方法都有共同属性

  • push_back( ) 成员函数在向量的末尾插入值,如果有必要会扩展向量的大小。
  • size( ) 函数显示向量的大小。
  • begin( ) 函数返回一个指向向量开头的迭代器。
  • end( ) 函数返回一个指向向量末尾的迭代器。

你可能感兴趣的:(c++,开发语言)