10.3 指针

[二级指针]
定义指针

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 ;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容