指向const指针(或指向const的指针)

温格斯

我有以下代码:

#include <iostream>

int main(){

    int v1 = 20;

    int *p1 = &v1;
    int **p2 = &p1;

    return 0;
}

我在这里要做的是将一个指针指向另一个指针,在这种情况下它可以正常工作。

我使p1指向一个const指针或一个指向a的指针const

int *const p1 = &v1; OR
const int *p1 = &v1;

现在我的代码不起作用。考虑第一种情况。int *const p1 = &v1;这是我的更新代码,我认为应该是正确的:

#include <iostream>

int main(){

    int v1 = 20;

    int *const p1 = &v1;
    const int **p2 = &p1;

    return 0;
} 

制作指针本身const意味着它不能指向另一个对象,但是可以更改它所指向的对象的值。所以,如果我想另一个指针指向先前的指针p1,我需要确保让这第二指针不能被用来改变的价值p1所以我让(p2)一个指针const但这是行不通的。

错误:从'int * const *'到'const int **'的无效转换[-fpermissive]

同样,第二种情况也失败。我认为应该正确的代码:

#include <iostream>

int main(){

    int v1 = 20;

    const int *p1 = &v1;
    int **p2 = &p1;

    return 0;
} 

将指针指向const意味着该指针不能用于更改其指向的对象的值。但是,指针可以更改其自身的值,即它可以指向其他对象。由于我可以更改指针的值,因此第二个指针不必指向const。

错误:从'const int **'到'int **'的无效转换[-fpermissive]

我正在使用GNU CC编译器,我是C ++的新手,我迷路了。我想知道如何将指针指向与涉及的其他指针const

谢尔盖·卡里尼琴科(Sergey Kalinichenko)

您的第一次重写没有用,因为您尝试将常量指针的地址分配给最终“指针”(即int)是常量的指针到指针,而不是中间的指针。换句话说,如果C允许

int *const p1 = &v1;
const int **p2 = &p1; // Not allowed

它应该允许这样:

*p2 = &v2; // This would be legal.

但是,这将修改指针p1,据称该常量是恒定的。

要使第一个重写生效,您需要进行以下更改:

int *const p1 = &v1;
int * const *p2 = &p1;

请注意如何const从声明之前移到星号之间。现在,您正在创建一个指向int常量指针的指针。

您的第二次重写失败,因为它const完全降低了-ness。要修复它,请放const回到声明的开头:

const int *p1 = &v1;
const int **p2 = &p1;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++指向const指针的const数组的指针

来自分类Dev

将指向const指针的引用从指向非const的指针安置

来自分类Dev

指向int的const数组的指针

来自分类Dev

确定指向const的指针是否指向const对象?

来自分类Dev

Swift指向const char参数的指针

来自分类Dev

指向const重载成员函数的指针

来自分类Dev

指向C ++中const int的指针

来自分类Dev

C ++制作指向const对象的指针数组

来自分类Dev

指向const的指针作为函数参数

来自分类Dev

指向包含互斥量的结构的const指针

来自分类Dev

使用const指针指向函数中的类

来自分类Dev

函数调用中指向 const 的指针

来自分类Dev

使用智能指针指向const int的指针

来自分类Dev

了解指向常数的指针指向整数常数的指针(const int * const *变量)

来自分类Dev

通过memcpy将“指向const的指针”复制到“指向非const的指针”

来自分类Dev

C:指针类型之间的非法转换:指向const unsigned char的指针->指向unsigned char的指针

来自分类Dev

“指向const int的指针”是否与“ const int *”相同

来自分类Dev

指向同时接受const和非const参数的函数的指针

来自分类Dev

C const 指向 const struct 数组的指针作为函数参数

来自分类Dev

c-将指向const int的指针转换为仅指向int的指针(并对其进行修改)

来自分类Dev

为什么指向非const成员函数的指针不能指向const成员函数而相反呢?

来自分类Dev

为什么指向非const成员函数的指针不能指向const成员函数而相反呢?

来自分类Dev

如何从静态函数返回指向const的指针?

来自分类Dev

在为const时返回指向自身的指针的类函数。C ++

来自分类Dev

指向const char指针的地址的数据类型

来自分类Dev

在递归调用中传递指向const int的指针

来自分类Dev

解引用指向const数据类型的指针

来自分类Dev

指针指向

来自分类Dev

c ++:“指向const的指针”所指向的对象是否被视为不变或只是不可修改?

Related 相关文章

  1. 1

    C ++指向const指针的const数组的指针

  2. 2

    将指向const指针的引用从指向非const的指针安置

  3. 3

    指向int的const数组的指针

  4. 4

    确定指向const的指针是否指向const对象?

  5. 5

    Swift指向const char参数的指针

  6. 6

    指向const重载成员函数的指针

  7. 7

    指向C ++中const int的指针

  8. 8

    C ++制作指向const对象的指针数组

  9. 9

    指向const的指针作为函数参数

  10. 10

    指向包含互斥量的结构的const指针

  11. 11

    使用const指针指向函数中的类

  12. 12

    函数调用中指向 const 的指针

  13. 13

    使用智能指针指向const int的指针

  14. 14

    了解指向常数的指针指向整数常数的指针(const int * const *变量)

  15. 15

    通过memcpy将“指向const的指针”复制到“指向非const的指针”

  16. 16

    C:指针类型之间的非法转换:指向const unsigned char的指针->指向unsigned char的指针

  17. 17

    “指向const int的指针”是否与“ const int *”相同

  18. 18

    指向同时接受const和非const参数的函数的指针

  19. 19

    C const 指向 const struct 数组的指针作为函数参数

  20. 20

    c-将指向const int的指针转换为仅指向int的指针(并对其进行修改)

  21. 21

    为什么指向非const成员函数的指针不能指向const成员函数而相反呢?

  22. 22

    为什么指向非const成员函数的指针不能指向const成员函数而相反呢?

  23. 23

    如何从静态函数返回指向const的指针?

  24. 24

    在为const时返回指向自身的指针的类函数。C ++

  25. 25

    指向const char指针的地址的数据类型

  26. 26

    在递归调用中传递指向const int的指针

  27. 27

    解引用指向const数据类型的指针

  28. 28

    指针指向

  29. 29

    c ++:“指向const的指针”所指向的对象是否被视为不变或只是不可修改?

热门标签

归档