首页 > 代码库 > c++笔记——语法基础1
c++笔记——语法基础1
c++笔记将记载一个温习路径,也算一个快速学习的参考吧!(不一定全面,想到什么就写什么。要学习的同志最好是有权威的书坐镇)
笔记大概会有如下有几个部分:语法基础,使用拓展库,实用工程,补充说明
数据类型:
简单类型:(byte = 8 bit,以下所示为32bit系统,bit不同稍有区别;除ab都可以在类型标识unsigned,表示无符号,一般最高位0表示正,1表示﹣,那么其取值范围也可以类推)
a) void: 0byte 无值域 void
b) bool: 1byte true/false bool ok = false;
c) int: 4byte [-2^31 ~ 2^31-1] int nflag = 1;
d) short: 2byte [-2^15 ~ 2^15-1] short nsht = 1;
e) long: 4byte [-2^31 ~ 2^31-1] long nCnt = 999;
f) char: 1byte [-2^7 ~ 2^7-1 ] char chA = ‘a‘;
g) wchar_t 2byte [-2^15 ~ 2^15-1] wchar_t wchF = ‘f‘;
复杂类型:主要指一定自定义类型union,enum,struct,class。暂时介绍主要作用及定义,具体使用查阅它们分别对应的链接。
a) union: 组合,多种类型其值内存重叠共用,内存起始点相同,内存大小依据多类型中最大长度而定,不同类型写入值则改变它所占到的内存位置,不同类型取值也是读其所占的内存位置。具体参考该链接:link
union aUion{ char a; int b; long c;};
b) enum: 枚举,多用来表示一种状态,默认下一个的值是当前的值+1,如下EING==2。具体参考该链接:link
enum aEnum{ EOK = 1, EING, ENO = 4};aEnum sta = EING;
c) struct:结构体,多用来表示事物的属性集(默认权限public)。具体参考该链接:link
struct aStruct{ string name; int age; int height; int weight;};
d) class:类,多用来表示一类事物,包括属性集,包括功能(跟struct非常相似,默认权限private)。具体参考该链接:link
class aClass{ aClass(){} ~aClass(){} bool bOld(){return age>60;} string Name(){return name;}private: string name; int age;};
流程控制:
a) if else,三元式:
1) if (/*condition*/) { /*do something*/ }2) if (/*condition*/) { /*do something*/ } else { /*do something*/ }3) if (/*condition*/) { /*do something*/ } else if (/*condition*/) { /*do something*/ } else { /*do something*/ }
4) (/*condition*/) ? (/*do something*/) : (/*do something else*/)
//符合条件执行do something,不符合执行do something else。 执行如有多行,不建议这么做。
b) while ,do while:
1) do { /*do something*/ } while (/*condition*/);2) while (/*condition*/) { /*do something*/ }
//do while先执行再判断,while则是先判断再执行
c) for:
for (/*init*/; /*condition*/; /*change*/) { /*do something*/ } //经典用法 for (int i = 0; i < 100; i++) { /*do something*/ }
d) goto,一致不受到推荐,暂且不介绍
函数:
依次是返回值类型,函数名,括号,在括号中是参数,参数用逗号分开,每个参数都有一个类型及形式参数,参数传递有三种形式(值,地址,引用)
int Add(int a, int b){ return a+b;}void Swap(int* a, int* b){ int nTmp = *a; *a = *b; *b = nTmp;}void Swap(int& a, int& b){ int nTmp = a; a = b; b = nTmp;}
1)值:
int x = 1;
int y = 2;
int z = Add(x, y);
参数是分别将x拷贝初始化a,y拷贝初始化b,返回a+b时,也是a+b存放在临时变量中,再将该临时变量拷贝赋值了z。
2)地址:
Swap(&x,&y);
这里也是一样,将x的地址拷贝初始化了a,y的地址拷贝初始化了b。再取地址对应的值进行交换。如果是传值则x,y无法交换,这个时候的A,B 就像是临时变量,在函数中有效,return之后就无效了
3)引用:
Swap(x, y);
a被当作了x的引用,b被当作了y的引用,指向同一个内存地址。
运算:
1) 逻辑运算:
非:!(expre) 取反
或:(expreL) || (expreR) RL其中一个成立则为true、都不成立则返回false,先判断L。
与:(expreL) && (expreR) RL其中一个不成立则为false,都成立则返回true,先判断L。
2) 位运算:
非:!(expre) 非0则得0,0则得1
或:(expreL) || (expreR) 每一个bit计算,0|0得0,其他得1
与:(expreL) && (expreR) 每一个bit计算,1|1得1,其他得0
3) 值运算:
calsym(+ - * / %) 对应 (加 减 乘 除 模)
=表示赋值 a=2, calsym= 表示某数加上一个值 a += 3即 a = a + 3;
4) 判断: == 等于 != 不等于
> 大于 >=大于或等于
<小于 <=小于或等于
5) 优先级:
由高到低[()],[*/%],[+-],[logic]。类似四则运算,最好加括号说明,即不会因为优先级问题出错,又便于分析