2016年下半年开始接触音视频相关的项目,在这之前对C++没有系统的学习过,就在中国大学MOOC上学习了西安交通大学的计算机程序设计(C++),课程学完之后把做的笔记总结出来发布到了自己的博客便于以后复习,最近发现访问不太稳定,同时也动了想要把遇到的问题以及解决方式记录下来的心思,起因是因为发现好多遇到过的问题当时花好多时间解决了,过了很长一段时间再遇到就忘记当时是怎么解决的了导致时间浪费,另外做笔记也能够重新思考一遍加深一次印象,才把之前博客上的内容迁移到简书上。
优先级:后置++ > 前置++ > 乘除
int a=3; //全局变量
int main()
{
int a =8;
cout<
}
//如果想使用全局变量而不是局部变量,应在变量前加上作用域运算符"::"即可.
变量的存储类型,C++程序运行时使用的内存区域
堆区
存放动态分配的数据,new出来的
栈区
存放局部数据,局部变量
全局数据区
存放全局数据和静态数据,全局变量
程序代码区
存放程序各个函数的代码
所有共用成员函数代码区对象中的函数成员共用一个存储空间,在代码区存放.
存储类型 auto,register,static,extern
一个变量完整形式
;
auto:在定义块的开始分配空间,执行结束时释放空间,函数的自动变量(auto)是在函数执行中才分配.
register:尽可能存放在CPU的寄存器中,提高程序的效率,仅局部变量和形式参数才可作为寄存器变量.
static变量是在编译时才分配的内存.如果在全局变量前加上static修饰符,则成为静态全局变量,只能在本文件中使用
extern:如果在一个源文件a.cpp中定义的全局变量想在b.cpp文件中使用,则应该在b.cpp中使用,则应该在b.cpp中加上extern进行声明,表示该全局变量不在b.cpp中定义的
a.cpp
int Dimension =100;
b.cpp
使用的话,应该声明如下
extern int Dimension;
位运算符
&按位”与”
a=01101001B
b=01011110B //&,全1为1全0为0
c=01001000B
|按位”或”
a=01101001B
b=01011110B //|,有1为1其他为0
c=01111111B
^按位异或
a=01101001B
b=01011110B //^,不同为1,相同为0
c=00110111B
~按位取反
//如:整数是4个字节占32位,补全之后对应位取反
字符的处理
字符串占的字节数=字符串的长度+1.如”程序设计”(4个汉子占8个字节),末尾加了一个结束符’\0’,所有+1个字符.
有些ASCII符号是不可显示的,如转义字符:
\n 换行符 ,\r 回车, \b 退格符,\t 制表符 ,\’ 单引号, \’’双引号, \0 字符串结束符, \f 分页符.
char *strcat(char *destin,char *source) //链接两个字符
char *strcpy(char *destin,char *source)//将字符串source拷贝到destin中
char *strlwr(char *string) //string转换成小写
char *strupr(char *string)//string转换成大写
String text ="heavy rains are pushing water";
k = text.find("heavy");
text.erase(k,sizeof("heavy")-1);
text.insert(k,"strong");
指针(*and&)
1.我们将存放地址的变量称为指针变量,这里的地址就是指针,指针也是数据类型.
2.*是指针类型变量的标识符
3.定义一个指针变量系统为该指针变量分配一定大小的内存(C++中,每个指针变量占有8个字节长度)
int a,*pta;//先定义变量
pta = &a;不可写成 *pta=&a;
/*
*pta并不表示指针变量pta.而表示pta指向的变量a.指针变量和指针变量所指向的变量完全是不同的概念.
&取地址运算符,&变量名 //获取变量的内存单元地址
*指针运算符(间接访问运算符)
指针变量pta存放着变量a的指针,则*pta表示pta所指向的变量,即变量a.
*/
int a =5; *p =&a;
cout<
cout<