//常量指针(指向常量的指针)【常量在前面 指针在后面 所以叫常量指针】 //为了解决指针可能误修改或破坏内存中的数据,我们可以对内存中的数据加上写保护。即具有这种属性的指针只能够读出内存中的数据, //却不能修改内存中的数据。我们把具有这种属性的指针称为指向常量的指针,简称常量指针。 #include<iostream.h> int main() { int t=1; const int i=2; const int *p;//常量指针允许指向相同类型的别的变量(或常量)可以用常量赋值,但不能间接引用修改数据,也可以更改它的指向。 // p=&i; // p=&t; *p=10;//不能间接引用修改数据 return 0; }
//指针常量(指针在前常量在后面)【int * const p=&f 】 #include<iostream.h> int main() { int t=9; int i=100; //const int i=100;//不允许指针常量指向常量 int *const p=&i;//变量i的内存地址变成了 常量的内存地址(不能被重新赋予新的地址) *p=1;//可以间接赋值 //p=&t;//不能改变他的指向 return 0; } #include<iostream.h> int main() { const int i=90; //int *p=&i;//不能把常量的地址给指针变量 const int *p=&i;//常量指针则可以 return 0; }
#include<iostream.h> void main() { //指向常量 的 指针常量 ——————都不行 故*p=9与p=&b 都是错的 const int a=10; int b=20; const int*const p=&a; cout<<*p<<endl; }
//******************************************************** 关于*(p)++的研究 #include<iostream.h> int main() { int a[6]={5,3,4,1,2,6}; int *p=a; cout<<(*p)++<<" "<<*p<<endl;//(*p)++是表示使p所指向的元素增加1,但这里输出*p并不是如此 cout<<*p<<endl;//*p所指向的元素在这里才实现自增1,可见第一个元素的内存地址存的值已经自增1了,但是一开始却表达不出来。 return 0; }
#include<iostream.h> int main() { int a[6]={5,3,4,1,2,6}; int *p=a; for(int i=0;i<6;i++) { cout<<(*p)++<<" ";//输出的结果并不是6 7 8 9 10 11;而是完全把首元素当成5开始自增了 } return 0; }
#include<iostream.h> int main() { int a[6]={5,3,4,1,2,6}; int *p=a; cout<<a[0]++<<endl;//这个a[0]++也是如此,输出来的元素也不会增加 return 0; }
|
请发表评论