[二级指针]
定义指针
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 ;