首页 > 代码库 > 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]。类似四则运算,最好加括号说明,即不会因为优先级问题出错,又便于分析