const int * 和 int * const 傻傻分不清楚

Posted knmxx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了const int * 和 int * const 傻傻分不清楚相关的知识,希望对你有一定的参考价值。

const int * a和int const *a一样,定义时不是必须初始化,指针可以指向其他变量,但是指向的变量的值不能修改。

int * const定义时必须初始化,即必须指明指向哪个变量,定义后就不能再指向其他变量,但是指针指向的变量的值可以被修改。

 1 #include<iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     //a和b是一样的,代表一个常整型数,必须手动初始化
 6     const int a = 0;
 7     int const b = 1;
 8     int ca = 3;
 9     int cb = 4;
10     //c是一个指向常整数型的指针,可以不初始化
11      int const *c ;//同const int *c;
12     c = &ca;
13     cout << *c << endl;//3
14     //指针本身可以修改:可以再指向其他变量
15     c = &cb;
16     cout << *c << endl;//4
17     //指针所指向的内存数据不能被修改:指针指向的变量不能再被赋值
18     //*c = 5;//error
19     
20     int *e = &ca;
21     cout << *e << endl;//3
22     e = &cb;//正常的指针和变量都不是const的话可以改变指针的指向
23     cout << *e << endl;//4
24     *e = 6;//正常的指针和变量都不是const的话可以改变指针所指向变量的值
25     cout << *e << endl;//6
26     //d是常指针,必须初始化:指明指针指向哪个变量
27     int  *  const d= &ca;
28     cout << *d << endl;//3
29     //指针变量本身不能修改,即不能再指向其他变量
30     //d = &cb;//error
31     *d = 7;
32     //可以改变指针所指向的变量的值
33     cout << *d << endl;//7
34 
35     //f:一个指向常整型的常指针(指针和它所指向的内存空间,均不能被修改)
36     const int * const f = &cb;
37     cout << *f << endl;
38     //f = &ca;//error
39     //*f = 9;//error
40     system("pause");
41     return 0;
42 }

 

以上是关于const int * 和 int * const 傻傻分不清楚的主要内容,如果未能解决你的问题,请参考以下文章

int *p,cons int *p,int const *p,int * const p,const int * const p,int const * const p的差别

const int * 和 int * const 傻傻分不清楚

C++学习笔记关于const int* int const * int* const

the difference between const int *, int * const, int const *

c语言里const int 和int 有啥区别,const的作用是啥。

以下关于指针的说法,正确的是( ) A.int *const p与int const *p等价 B.const int *p与int *const p等价 C.const int *p与int c