c++学习笔记六

指针
   可以使用指针记号操作存储在数组中的数据
   可以在函数中访问函数外部的大块数据
   动态为新变量分配空间
  
   1 指针的声明: long * pnumber;
   2 地址运算符: &
        例如:long number=1234L;
              long * pnumber;
              pnumber=&number;
   3 间接运算符: *
   4 指针的初始化  :
        可以用变量地址初始化指针,代码如下:
                int number=10;
                int * pnumber=&number;
         还可以int * pnumber=0;
   5 把指针初始化为char类型
         可以用字符串字面量初始化:char * str1="this is a test!"; (由于字面量是const类型,所以该指针只是指向该字符串地址,不能修改其字符串内容;若想修改其内容,可以用以下形式:const char * str1="this is a test!";)
     指针数组 '
         格式如下:
          const char * strs[]={"first","second","third","forth","fifth"};
     使用指针对字符串进行排序
     让输出结果变整齐
   6 常量指针和指向常量的指针
       const char * strs[]={"first","second","third","forth","fifth"};
       以上指针可以通过以下语名进行修改: strs[1]=strs[2];(让两个指针指向同一地址,实际字符串的地址不变)
       进行如下修改后指针数组就不能修改了:
       const char * const strs[]={"1","2","3","4"};


      对指针及其指向的内容使用const有三种不同情况:
          (1)指向常量的指针:const char * parstr="this is a test string!";(指针指向的内容不能修改)
          (2)常量指针:  int num=100; int * const pnum=#    (存储在指针中的地址不能修改)
          (3)指向常量的常量指针 int num=100; const int * const pnum=#(两者都不能改变)
    7 指针和数组
      指针的算术运算
          指针递增一: int * pnmu[];  pnum++; (称动指针到指针指向数组的下一个元素)
          计算两个指针之间的差
      使用指针名的数组表示法
             把数组用作指外针: int nums[2]={1,2};可以用指针表示法 如 nums[2]等同于(*data+3)
      对多维数组使用指针:  int bean[2][3];  int * pbean=&bean[0][0]
      c样式字符串的操作
        在<cctype>中声明的函数,实现分析和转换单个字符
        头文件在<cstring>
           连接字符串: strcat() 把第二个字串追加到第一个字串中
                       strncat()有三个叁数,前两个同上,第三个用于指定第二个字符串的字符个数
           复制:strcpy()
           比较:strcmp()
           搜索:strchar()
    8 动态分配内存
       自由存储区:程序中没有用到的内存空间  new对应的delete 用来释放未用到的空间
        数组的动态内存分配: pstring=new char[20];(分配自由存储区的内存)
                            删险数组时使用 delete [] pstring; 这里可以不用指定维数
       动态分配内存的危险
             内存泄露 new后一定要使用delete释放内存
             指针和变量的作用域
             自由存储区的碎片
       转换指针
         reinterpret_cast<指针类型>(表达式)  强制转换任何类型指针
         例如:float value=2.5f;
               float * pvalue=&value;
               long * pnumber= reinterpret_cast<long>(pvalue); (类型为long,值本身没有变)
posted @ 2012-09-03 15:28  retacn_yue  阅读(132)  评论(0编辑  收藏  举报