其他语言

本类阅读TOP10

·基于Solaris 开发环境的整体构思
·使用AutoMake轻松生成Makefile
·BCB数据库图像保存技术
·GNU中的Makefile
·射频芯片nRF401天线设计的分析
·iframe 的自适应高度
·BCB之Socket通信
·软件企业如何实施CMM
·入门系列--OpenGL最简单的入门
·WIN95中日志钩子(JournalRecord Hook)的使用

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
c++语言程序设计-----学习笔记(2)

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

第五章  指针  数组 结构

1 指针:

int *a[32]     一个数组,它包含32个到int的指针

int (*f) (char *)  到函数的指针,这种函数以char*为参数,返回int

int *f(char *)    一个以char *为参数的函数,返回一个到int的指针

2 零:

0是一个整数,当表示一个空指针时,最好用*P0;若要用null,则最好用 const int null0来定义null

3 数组:

在定义数组时,数组的大小必须设定,如:

   int v[3];

若要定义一个可变的数组则可以用:

   vector<int>v(i)    //i可变

4 字符串文字量:

字符串的类型是“适当个数的const字符的数组”,所以“bohr”的类型就是const char[5],所以下列程序就会发生错误:

 void f()

{

  char *p=”plato”;

  p[4]=’e’;  //错误,给常量赋值

}

若我们希望字符串被更改,则可把字符串复制到一个数组中:

void f()

{

  char p[]=plato”; //拷贝到数组p

  p[4]=’e’;

}

由于字符串是静态分配的,所以让函数来返回它是安全的:

  const char * error_msg(int i) // 定义一个返回常量字符指针的函数

{

     ///………………….

    return “error”;

}

4        引用:

我们可以通过引用来描述一个函数的参数,以使该函数能够改变传递来的变量的值,如:

void incr (int & a){a++;}

void f()

{

  int x=1;

  incr(x);           ///x=2

}

  但是我们必须尽量避免使用引用,而应该通过返回值或明确要求一个指针参数:

void incr(int *p) {(*p)++;}

 void f()

{

   int x=1;

   incr(&x);  ////////x=2

}

5        指针和常量

指向常量的指针和指针常量的区别:

(主要看 *和谁离得比较近)即:

char const *pc

                 均表示pc所指得那个数为常量,不可更改但pc可以被更改。

const char *pc     

        

         char *const *pc      表示pc不能被更改,是常量,而pc所指得数可以被更改。

   作用:

       const char *p 作为函数的参数有效杜绝了函数更改p所指的内容,使p所指的内容只能被读取。

   注意:

       我们不能用一个常量给一个非指向的常量的指针赋值: 如:

         const int a=3;

        int *p=&a;     //// 错误!!!应该使用 const int *p=&a;

 

 




相关文章

相关软件