程序的输出 |指向常量或常量指针的指针?
预测以下程序的输出。
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;
}