int * const(变量名)和int const *(变量名)有什么区别? [重复]

问题描述 投票:0回答:1

我正在学习 c 并试图弄清楚指针是如何工作的。 我只是好奇这两个声明之间的区别是什么:

int i; int  *const cip = &i; int const *cip =&i;

如果遗漏了什么,请随时告诉我,在此先感谢。

c pointers constants declaration
1个回答
0
投票

本声明

int  *const cip = &i; 

声明一个指向 int 类型对象的常量指针。这意味着您不能更改足尖的值。例如,在这个声明之后你不会知道

cip = &other_i;

在这个声明中

int const *cip =&i;

声明了一个指向常量数据的指针。指针本身可能会改变,但指针指向的数据可能不会改变。所以你可能也不写例如

*cip = 10;

最后这个声明

int const  * const cip = &i;

声明一个指向常量数据的常量指针。

注意如果你声明一个函数像

void f( int * const cip );

下面的函数声明

void f( int * cip );

声明相同的函数,因为在函数声明中忽略了 const。然而,它在函数定义中被考虑在内。

如果你将像这样定义函数

void f( int * const cip )
{
    //...
}

然后在函数内你不能改变指针。另一方面,如果您将像

这样定义函数
void f( int * cip )
{
    //...
}

然后你可以改变函数内的指针。

© www.soinside.com 2019 - 2024. All rights reserved.