c++ c 基础的总结(-)

       C++ 面向过程  C语言 面向对象  但是C++中也有  面向对象 和过程
      c++占位符::
      %ld输出长整形格式 %u 十进制无符号整数  %f 浮点数  %s 字符串  %c 单个字符  %p 指针的值
  


(1) #define “” 与#define<>的区别

            #define “” 是首先在指定的目录去寻找, 然后去系统盘寻找

           #define <> 是直接去系统盘寻找 

     (2)  C 的预处理命令

            1) 宏的定义 #define 

            2) 条件编译 

            

                #ifdef 标识符
               #else
                 程序段2
             #endif
               或
          #ifdef
               程序段1
            #endif
             还有一种情况
               #ifnodef
      程序段1
                #endif

           3)   文件包含

                  #include <包含的文件为头文件 以.h 结尾>

                # include ""

          关于的常量: 值不能被改变的量 意思是初始化的值

                  数值型常量 :(整形,浮点数)
                 字符型常量 :(字符,转义字符,字符串 )
                 符号:(#define 符号常量,常量值)

              变量的定义: 值可以程序运行改变的量为变量

                      命名:c++ 规定标识符 由字符,数字,下划线开头  ,只能由字母,下划线开头
                     大小写敏感
                   不能使用关键字和保留字 (例如data, long,int  之类的)

          常变量:
          const 关键字(也就是我们说的指针)的变量,程序运行时 值 不可改变  称 常变量
           一旦定义 不可改变

         小说明:我们经常说的定义常量 其实是定义长变量  const   bool  hh =false;

      C ++, C 的运算符

     算数运算符: +-* /, i++,++i

    值得注意也就只有 i++,++i的区别了  i++ 先运算  再自增  ++i 与之相反

      关系运算符:  <   >  ==    >=    <=    !=

      需要注意的只有: == 比对的是值 不是地址

      返回值是bool 值

     逻辑运算符      &&    ||   !   好记得话 可以说是 与 或  非 

        1) &&  两边同真为真 同假为假  同生共死的味道

        2)  ||     只要有一方为真 则为真 

        3) !  取反值

        位运算符  《       》   &     |    ^   ~

        按位计算的二进制数字 

          1)按位左移 《 <<2  向左边 形象点说 (一条长凳 本来只有   0000 0011  四个人 但是现在从左边坐 两个人 22  数值改变为  0000 1122 )

          2) 按位右移 《 <<2  向左边 形象点说 (一条长凳 本来只有   0000 0011  四个人 但是现在从右边坐 两个人 22  数值改变为  0000 0000 )

         3)按位与    &                                                按位或    |                      按位异或                                       按位取反

              举例                                                               举例                             举例                                                 举例

              3&5                                                                 3 |5                                 3^5                                                ~3

   3       0000  0011                                                    0000 0011                     0000  0011                                            0000  0011

   5       0000   0101                                                  0000  0101                     0000   0101                                            1111  1100

            0000  0001                                                   0000  0111                       0000  0110       

                左值和右值
                Lvalue  location value  地址(内存地址)量
                Rvalue  read value  读取

                经常性的错误正确理解

                在这块有个小的注意点 

                   int  A =4

                     if(A=4){

                          // 编译通过  在C 语言中 只有为0才为假  不为0就为真

                              }

                         if(4=A){

                            //报错                             

                          }

                       if(4==A){

                            //编译通过                             

                          }

                     复合赋值运算符:
                     +=   -=  *=   /=  %=  《=  》=  &= ^=   %=

                  还有   其他运算符
                     指针运算符
                     引用运算符和地址运算符 &
                     强制类型转换运算符  :(类型)
                     成员运算符.  :: 
                      程序语句 :
                     1.声明语句:
                     变量  int i=1;
                     2.执行语句:
                     1.控制语句
                     1)
                       if() {}else
                       for  switch  while  do while
                        控制
                        continue ; 在for循环中
                        break;   终止语句  
                        case;
                        go to 转向语句    c语言没有类的定义  只有在C++中才有类的定义  在C语言执行回调
                        return  从函数返回语句
                        loop: c语言中 loop 让语句有意义
                        2.函数和流对象调用语句‘
                     3.空语句
                     4.复合语句

              指针: 首先要高清楚的两个概念  区别:

                         一个变量的指针  就是变量的地址  

                           指针变量: 存放变量的地址的变量

              指针的数据类型:

                两种:  * 指针运算符(间接访问运算符)  int*  p

                            & 取指针的运算符(地址运算符)int* a=(int*)&p;

                  变量与指针的关系:

                  数据类型 * 指针变量名  int*  p   (p是指针 不是*  p)

                    2.引用的指针变量:

                        &a 变量a的地址  * p是 指针变量指向的内存单元

                        

                         
                   我来解释上面的图片 :  上图相当于一个内存条, 1,2,3,4,5,6代表的就是每一个指针变量也就是一个地址名称,圆圈1,2,3,4,5,6,7代表就是里面放的数据

                   我把上面的串一下

                        首先 int* p=1 *p代表的就是内存里面的内存单元1,int* a=(int*)&p; &p代表的是引用的地址

                      指针作为函数参数

                      void my(int* p1,int* p2) {

   }

            void my(p1,p2){

}

    两者是等价的 int* p1是指针也可以作为参数

     3.指针变量的数据类型

       int i;i定义的整型变量;

      int* p; p是指向整形数据的指针变量;

     int p[n] ;定义整型数组p, 它有n个元素;

     int* p[n];定义指针数组p,它由n个指向整形数据的指针元素组成

     int (*p)[n];p是指向含n个元素一维数组的指针变量

     int f() ;返回值是int的叫做f的函数

    int* p();  返回值是指针的叫做p的函数, 该指针指向整形数据的指针元素组成

    int (*p) () ;p是指向函数的指针,该函数返回整形值

   int * * p,p ; 是指向指针的指针变量,它指向一个指向一个指向整形数据的指针变量

    数组与指针

         1.指向数组元素的指针 :

         在C++ 中 ,数组名代表数组中第一个元素的地址

       int a[10]

        int* p;

       p=&a[0];

      p=a;

      2.用指针变量做函数接收数组地址

      void  my(int array[]);

     void my(int* array);

  5.函数与指针

     函数在编译时被分配给一个入口地址,这个函数的入口地址就被称为函数的指针

    1.用函数指针变量调用函数

        int max(int x,int y)

       int (*p)(int,int)

       p=max;

      int  max;

      int m;

      m=p(1,2)

     以上的代码就将max函数的入口地址赋给了指针变量p

      函数名代表函数的入口地址

     2.用指向函数的指针做函数参数

     int my_max(int x,int y,int (*p)(int,int))

       max (a,b,p)
      返回指针值的函数:

      int* p(int x,int y)
     int (* p) (int x,int y) ;  函数指针

    指向指针的指针(二级指针):

   int * (*p)

    int **p

   p为指向一个指向整型数据的指针变量的指针

   指针的运算:

   1.指针变量加/减一个指针

    C++规定: 一个指针变量加/减一个整数是将该指针变量加/减  它指向的变量所占用的内存单元字节数相加或相减

    2.指针变量的赋值:

      p =&a; 将变量a的地址赋给p

      p = array;将数组array首个元素的地址赋给p

     p = array[i]; 将数组array首个元素i的地址赋给p
     p = max; 将函数max的入口地址赋给p

     p1 = p2 ;p1和p2需都是同类型的指针变量,将p2的值赋给p1

       重点: 指针为空int * p , p = null  该指针不指向任何变量

       指针为空和指针未赋值是两个概念,前者有值(为0),不指向任何变量,后者未赋值但是不代表无值,这是一个无法估量的值

       可能会指向未指定的单元。  一定要避免这种情况的发生

        注意的小点:  0值常量表达式, 编译时获得0值的const对象,字面值常量0  NULL

        自定义数据类型:

       结构体:  是将不同数据类型组合在一起的数据类型 

                   定义:

                  struct : 结构体类型名:

                   {成员变量1,成员变量2}

               声明一个结构体类型必须对每一个成员都进行类型声明  类型名 成员名

             声明一个结构体类型 一般会在文件开头,确保文件中的函数都可以调用

            3. 结构体变量的引用:

                     1.可以将一个结构体变量的值,赋给一个具有相同结构体变量

                    2.可以引用一个结构体变量中的 一个成员的值

               3.  如果一个成员本身也是一个结构体,就要用成员运算符一级,一级向下查找成员

             结构体变量的成员,可以像普通变量一样进行各种运算

              可以引用结构体变量成员的地址,也可以引用结构体变量的地址

              结构体数组:

                定义结构体数组 

                         结构体数组中的每个元素都分别包含各个成员项

                       结构体数组初始化:

                      和一般数组是一样的

             结构体指针:

               结构体的变量的指针,就是该变量所占内存段的起始位置;

              1.通过指向结构体变量的指针引用结构体变量的成员:

                 stu.num  (*p).num  p->num  等价写法

                p->n  p指向的结构体变量中的成员n的值

                p->n++  p指向的结构体变量中的成员n的值,使用完+1

                ++p->n  p指向的结构体变量中的成员n的值,+1后使用

               2.用结构体变量和指向结构体变量的指针构成链表

                   struct  Student

                       {

                       int num;

                        float score;

                       Student * next

                         };

                结构体类型数据作为函数参数:

                  1.用结构体变量名做参数;

                  2.用指向结构体变量做实参,将结构体变量的肢体传给形参

                 3.用结构体变量的引用变量

     公用体:

             共用体是几个变量共同占用一段内存的结构 

             union 共用体类型名

             {成员列表}

             公用类型名  公用变量名

            结构体和共用体差异  :  结构体是所有成员变量的内存长度之和 

                                                     共用体是取最长成员的长度 作为内存地址

                   2.访问方式:  共用体变量不能被直接饮用

                                           只能引用共用体变量的成员

               枚举类型: 枚举类型是将变量可能出现的值都一一列出的一种类型 ,

                              2. 枚举类型的定义和引用

                                   enum   {枚举常量列表}

                                 枚举类型名  枚举变量名

                        1.枚举元素按常量处理, 所以称为枚举变量,

                          一个整数不能直接赋值给一个枚举变量,要先进行强制类型转换 typeed 关键字

                           typeed  int num 

                     引用类型:

                             声明之后不可以作为其他变量的引用

                               int a1,a2;

                              int &b = a1;

                              int &b = a2; //  错误演示

                  将引用作为函数参数

                               1.将变量名作为实参和形参

                               2.传递变量的指针

                               3.传递变量的别名

                  类和对象

                       在这块是主要是public  private protected  区别 

                 类和结构体的异同:

                           结构体不加声明时默认成员是共有的

                         类不加声明默认成员是私有的

                     对象成员的引用:

                          Student  stu1,stu2

                                Student* stup;

                               Student &stur = stur3

                                stu1.age //通过对象名

                               stu1.age //通过引用变量

                              stu1->age //通过指向对象的指针

                         * &

                   区分* 是什么运算符: 在声明语句中且不为右值部分的时候,是指针运算符

                                                       不在声明语句中,作为左值部分时候,是间接访问运算符

                       区分& 是什么运算符: 在声明语句中作为左值部分的时候,引用运算符

                                                       不在声明语句中作为右值部分时候,取地址运算符



发布了15 篇原创文章 · 获赞 0 · 访问量 5416

猜你喜欢

转载自blog.csdn.net/hc5054/article/details/77888723