📜  程序的输出 |指向常量或常量指针的指针?

📅  最后修改于: 2022-05-13 01:56:11.179000             🧑  作者: Mango

程序的输出 |指向常量或常量指针的指针?

预测以下程序的输出。

c
int main()
{
    int x = 5;
    int * const ptr = &x;
    ++(*ptr);
    printf("%d", x);
        
    getchar();
    return 0;  
}


c
int main()
{
    int x = 5;
    int const * ptr = &x;
    ++(*ptr);
    printf("%d", x);
       
    getchar();
    return 0; 
}


输出:6
说明:
请参阅以下声明以了解常量指针和指向常量的指针之间的区别。
int * const ptr —> ptr 是常量指针。您可以更改指针 p 指向的位置处的值,但不能将 p 更改为指向其他位置。
int const * ptr —> ptr 是一个指向常量的指针。您可以更改 ptr 以指向其他变量。但是你不能改变 ptr 指向的值。
因此,上面的程序运行良好,因为我们有一个常量指针,并且我们没有更改 ptr 以指向任何其他位置。我们只是增加 ptr 指向的值。
试试下面的程序,你会得到编译器错误。

C

int main()
{
    int x = 5;
    int const * ptr = &x;
    ++(*ptr);
    printf("%d", x);
       
    getchar();
    return 0; 
}