易百教程

23、常量指针和指向常量的指针有什么区别?

常量指针:
常量指针是其值(指向的地址)不可修改的指针。 如果尝试修改指针值,将得到编译器错误。
常量指针声明如下:

Data_Type * const Pointer_Name;
int *const ptr; //constant pointer to integer

当编译以下代码会得到编译器错误时,让我们看看下面的示例代码。

#include<stdio.h>
int main(void)
{
    int var1 = 10, var2 = 20;
    //Initialize the pointer
    int *const ptr = &var1;
    //Try to modify the pointer value
    ptr = &var2;
    printf("%d", *ptr);
    return 0;
}

指向常量的指针:
在这种情况下,指向的地址的值是恒定的,这意味着不能更改指针指向的地址的值。
常量指针声明如下:

Data_Type  const*  Pointer_Name;

int const *ptr// pointer to const integer

下面代码演示一个指向常量的指针:

#include<stdio.h>
int main(void)
{
    int var1 = 100;
    // pointer to constant integer
    const int* ptr = &var1;

    //try to modify the value of pointed address
    *ptr = 10;

    printf("%d", *ptr);
    return 0;
}