指针常量与常量指针

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 = &ii;//就是不报错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

}

 

原文地址:https://www.cnblogs.com/letben/p/5225413.html