10.3 指针

来源:互联网 发布:高要网络问政平台 编辑:程序博客网 时间:2024/05/27 20:52

[二级指针]
定义指针

int *p;int **p;/*p指的是存放数据的地址值(a)*p指的是地址值a中所存放的数据值(b)**p指的是地址值为b的地方所存储的数据值此处 **p = *& data[0] ; // 就是相当于data [0] ;二级指针相互消除*/

[指针的区地址]
同其他变量一样,指针变量也有自己的地址和值,对指针而言,&运算符给出指针本身的地址

p1是指向地址的指针,而&p1是指向p1地址的指针

[指针的解引用]

int * pt ;   //未初始化指针* pt =5;    //严重的错误

创建一个指针时,系统只是分配了存储指针本身的内存,并没有分配存储数据的内存,因此,在使用指针时,必须先用已分配的地址初始化它。
[const保护数组中的数据]

int sum (const ar [] ,int n);

const告诉编译器,该函数不能修改ar指向数组中的内容,如果函数中发生修改,编译器会捕捉并生成一条错误信息。const并不是要求原数组是常量,而是该函数在处理数组时将其视为常量,不可更改。
创建指针时同样可以使用const,用于声明并初始化一个不能指向别处的指针,但是可以修改它所指向的值

double data [5] = {0};double * const pc =data;* pc = 5 ; //有效--更改data [0] 的值

同时,在创建指针时还可以使用const两次,该指针既不能更改它所指向的地址,也不能修改指向地址上的值。

const double * const pc = data ;