一、C语言
1、三目运算符(表达式?表达式 :表达式)
2、 b=1的话 a=b++ a=1 b=2 ; a=++b a=2 b=2
3、注意这个*x++和(*x)++后者是将地址加加
4、指针应用到了实参,形参,用法是《C语言函数》最后部分
5、
1)C语言中数据的存储类别:auto自动的,默认的,extern扩展的,register注册,static,volatile可变的
内存中的用户区,程序区:代码段,静态数据区:全局变量,动态数据区:局部变量
多个文件访问全局变量:a1.c中定义int x; a2.c中用的话extern int x;
而静态的全局变量和函数只能作用于本脚本
2)寄存器是cpu内部的存储单元,当变量的值需要频繁地读写,允许将变量放到CPU中的寄存器中,提高效率,这就是寄存器变量–register
3)局部static 作用域:本函数内或复合语句内,只在编译时赋初值一次
6、
1)内存中最小存储单位字节,字节有编号,比如1001,float用多个字节存储,起始地址作为变量的地址
&n1取到的是n1的内存地址【比如:n1的地址是1000,指针为1000】
2)基本类型 *指针变量名。 int *p1 指针变量。这个类型是指向数据的类型。不同的类型占用字节不同。int类型的话,指针变量+1,就变更成1004,char类型指针就是1001,因为它占一个字节
3)赋值两种方式 int a; int *p=&a;
int a; int *p; p=&a;
指针变量也占内存地址,也有内存地址,里面存的就是a的首地址。
*p用于访问p指向的存储区域里的内容。比如a=90,这个90
7、自己申请和释放指针
void *malloc(unsigned size) 释放:void free(void *p)
8、const指针【常量指针】,
指向的内容不能变 const int 星p,星p不能改变。可以指向不同的对象
【指针常量】:int 星 const p,只能指向固定对象,里面的值可以变;必须初始化
【常量指针指向常量】:const int * const p;指针对象不能变,指向的内容也不能变。
9、星(p++) 先取星p的值后p加1; (++p)先使p加1,再取p;
(*p)++是p所指向的元素值加1
10、函数名就是一个起始地址。int (星func)(char a,char b);不加括号int * func是返回值是int型的指针
二、杂记
1、hpp,其实质就是将.cpp的实现代码混入.h头文件当中,定义与实现都包含在同一文件
2、typedef—typedef unsigned long long c_uint64,定义常常的数据类型用的
3、long long就是比long范围还大的长整型
4、cJosn—.c文件组成的json解析器,采用链表存储的
5、hooks—简单说就是拦截指定的消息,并用自己的方式处理
6、 void *realloc(void *ptr, size_t size) 尝试重新调整之前调用 malloc 或 calloc 所分配的 ptr 所指向的内存块的大小
7、互斥锁—互斥锁标记用来保证在任意时刻,只有一个线程能访问对象