zoukankan      html  css  js  c++  java
  • C++笔记--指针数组和结构

        1. 指针
          1. 类型为T*的变量能保存一个类型T对象的地址
            1. Char c=‘a’;Char * p=& c;//保存了c的地址
          1. 指针的操作一般都是间接的引用,就是相当于引用指针所指的对象。
          2. 0是一个特殊的东西。它可以被当做任意的整型,浮点类型,或者是指针,这些都是视情况而定的。0表示当时的一个指针没有指向任何对象。
        1. 数组
          1. 数组的大小必须是一个常量,如果想用变量来表示数组的大小,可以使用vector来表示,例如:vector<int> vi(i);//I表示一个变量,数组的大小可以变化
          2. 数组不会出现赋值操作的。例如:v4={'a','b','c'};//错误的,没有数组赋值
        2. 字符串数组
          1. 字符串总是以一个空字符‘’结束,所以总是比看到的大小+1
          2. Char *P=“abc”;//这个是合法的,char *P就是相当于一个字符串
            P[2]='A';//这个是错误的,给常量赋值不对
          3. Char P[]="ABC";
            P[2]='A';//这个是正确的。
          1. 在应用于指针的时候,==比较的是变量的地址值,而不是指针所指的值。
        1. 数组指针
          1. 数组的名字可以被用做到它的开始元素的指针
            1. Int  v[]={1,2,3,4};
              int *p=v;//这里p指向的是数组v的开始元素(隐式的转换,从int[]转换成了int*)
              int *p=&v[4];//指向最后元素之后的一个位置,实际上并没有什么用
        2. 常量--const
          1. 加上const的常量在声明的时候就必须赋值
          2. 对于const的常量,有些时候常量的值在编译的时候已知,就不用为它分配存储空间,有些就是在编译的时候值不知,就必须为它分配存储空间。
            const int c1=1;//不需要分配空间
            const int c2=2;//
            const int c3=my_f(3);//这个在编译时未知,所以要分配空间
            const int * p=&c2;//这个就要为c2分配空间了,因为在这里调用了c2的地址。
          1. 指针和常量
            1. Const  char *p=s;//这个是指向常量的指针,p[2]是不能修改的,但是p指针可以:p=pv;
              char *const p=s;//常量指针
              p[3]='g';//正确,指向的不是一个常量
              p=pv;//错误,这个指针是常量指针,指向不能修改
              const char *const p=s;//这个是一个const到const
            1. Const char*   和char  const*是一样的,都是指向一个常量的普通指针,如果从右到左读的话,能对理解很有帮助
              char *const p;//p是一个const指针到char
              const char * p;//p是一个指针指到const char
        1. 引用
          1. 一个引用就是某对象的另一个名字,而且在引用的时候必须进行初始化,extern可以表示该变量在别处进行了初始化
            1. Int &z=p;//z和p同名
        2. 指向void的指针
          1. 一个指向任何类型对象的指针都是可以赋值给void*的。
          2. Void*最重要的用途就是需要向函数传递一个指针,而又不能对对象的类型做出任何假设,它表示的就是一个空类型的指针对象。
        1. 结构
          1. 结构类型对象的大小未必是其成员对象大小之和。
      1. 忠告:
  • 相关阅读:
    Oracle查询语句中指定索引时优化器及指定索引不好使的处理方法
    oracle 死锁处理
    ORACLE里锁的几种模式
    oracle rpad()函数
    Oracle JOB
    Oracle 函数取汉字的拼音首字母
    COM 组件注册方法
    oracle 创建一个用户,只能访问指定的对象
    SOAP和WSDL的一些必要知识
    【转】net.sf.json.JSONException: java.lang.reflect.InvocationTargetException
  • 原文地址:https://www.cnblogs.com/Kobe10/p/5527007.html
Copyright © 2011-2022 走看看