Int i=100;
Const int *p = &i;//指向常量的指针
*p = 10;//这样就会报错。
Int const *p1 = &i; p1不能在指向其他变量。//指针常量 为什么我的案例是可以?
vs中
在 main.c中我的指针常量其值可以更改,
在 main.cpp 中依然可以更改
dev中 可以更改+1.
所以常量指针的出现尤为必要。发现*p指向的单元其值不可改变。说明应该是一个我们在对其操作的时候,不希望他的数据被改变的数据。
比如 我们遍历一个数组,输进去 是2,8,3,排一个序,结果输出了 3,4,5这就不合理了。
void mySort(int array[],int length){//这样就有可能带来值的变化
//排序
}
所以合理的方式是:
void mySort(const int array[],int length(){
//排序
}
举例:
#include <iostream> void printMyArray(const int array[], int length); int main(){ int i = 100; const int *p = &i; //*p = 10;//常量指针,常量的指针,指向常量的指针,一旦常量被指定,其值不可改变。 int const *p2 = &i; int ii = 20; p2 = ⅈ//就是不报错hoo?我去用用devC++一样不报错 并且可以正常运行 int array[] = { 2, 3, 4 }; printMyArray(array, sizeof(array)/sizeof(array[0])); system("pause"); } void printMyArray(const int array[], int length){ for (int i = 0; i < length; i++) { printf("array[%d]=%d ",i, *(array + i)); } //*array = 3; //错误 1 error C3892 : “array” : 不能给常量赋值 f : ryc++指针常量和常量指针1指针常量和常量指针1main.cpp 27 1 指针常量和常量指针1 }