c++语言程序设计-----学习笔记(2)

王朝c/c++·作者佚名  2006-01-09
宽屏版  字体: |||超大  

第五章 指针 数组 和 结构

1 指针:

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

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

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

2 零:

0是一个整数,当表示一个空指针时,最好用*P=0;若要用null,则最好用 const int null=0来定义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;

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有