c/c++中const关键字用法,以及如何区分指针常量和常量指针实例

c/c++中const关键字用法,以及如何区分指针常量和常量指针实例:

C/C++在线编译连接

本文参考文献:C语言中const关键字的用法

一、区分常量指针和指针常量的方法:

    区分常量指针和指针常量的关键就在于星号的位置,我们以星号为分界线,如果const在星号的左边,则为常量指针,

    如果const在星号的右边则为指针常量。如果我们将星号读作‘指针’,将const读作‘常量’的话,内容正好符合。

    int const * n;是常量指针,int *const n;是指针常量。

二、const用法:简单来说起不变作用;

    1)修饰局部变量,则局部变量的值不变;

    2)常量指针:*不可通过改变指针改变变量的值(常量指针指向的值不能被改变);

                         *注意:但可直接对变量进行赋值改变,或常量指针可以指向其他的地址;

    3)指针常量:*指针本身是个常量,不能指向其他地址;

                         *注意:但地址中保存的数值是可以改变的,可以通过其他指向改变地址的指针来修改;

    4)修饰函数的参数:

                        4.1)防止修改指针指向的内容:用常量指针

                        4.2)防止修改指针指向的地址:用指针常量

                        4.3)以上两种结合;

    5)修饰函数的返回值:

    6)修饰全局变量:

    ps:4.5.6点看参考文献讲解(很明确,不做说明)

#include 
using namespace std;
/**************************************************************************
一、区分常量指针和指针常量的方法:
    区分常量指针和指针常量的关键就在于星号的位置,我们以星号为分界线,如果const在星号的左边,则为常量指针,
    如果const在星号的右边则为指针常量。如果我们将星号读作‘指针’,将const读作‘常量’的话,内容正好符合。
    int const * n;是常量指针,int *const n;是指针常量。
    参考文献:https://blog.csdn.net/xingjiarong/article/details/47282255
二、const用法:简单来说起不变作用;
    1)修饰局部变量,则局部变量的值不变;
    2)常量指针:*不可通过改变指针改变变量的值(常量指针指向的值不能被改变);
               *注意:但可直接对变量进行赋值改变,或常量指针可以指向其他的地址;
    3)指针常量:*指针本身是个常量,不能指向其他地址;
               *注意:但地址中保存的数值是可以改变的,可以通过其他指向改变地址的
                      指针来修改;
    4)修饰函数的参数:
                4.1)防止修改指针指向的内容:用常量指针
                4.2)防止修改指针指向的地址:用指针常量
                4.3)以上两种结合;
    5)修饰函数的返回值:
    6)修饰全局变量:
    ps:4.5.6点看参考文献讲解(很明确,不做说明)
***************************************************************************/
#if 1
/*eg1.10,const方法1,2 修饰局部变量,常量指针 用法实例*/
int main(){
    /*const int a=5;//假设直接将变量a设置为const(不变),则后面的a=6;语句将进行报错*/
    /*这里说明了被const修饰的局部变量,不可被改变*/
    
    int a=5;
    int b=10;
    const int* n=&a;//常量指针,指针指向的地址不变
    cout << n << endl;//指针地址不发生改变
    cout << *n << endl;//5
    
    //*n=10;//不可通过改变指针改变变量的值,否则会报错(常量指针指向的值不能被改变)
    
    a=6;//但可对变量直接赋值,使a的值发生改变
    cout << n << endl;//指针地址不变
    cout << *n << endl;//6

    /*需注意这里是常量指针,可以指向其他地址,而指针常量不能*/
    n=&b;//常量指针指向的值不能改变,但是这并不是意味着指针本身不能改变,常量指针可以指向其他的地址。
    cout << n << endl;//指针地址发生改变
    cout << *n << endl;//10
    return 0;
}
#endif

#if 0
/*eg1.10,const方法3 指针常量 用法实例*/
int main()
{
    int a = 5;
    int b = 10;//下文测试用的
    int *p = &a;
    cout << p <

你可能感兴趣的:(C/C++知识点记录,c语言,c++,开发语言)