const 修饰指针变量

const 修饰 *p

const修饰p的话,则该指针指向的地址的值不可以改变,指向的地址可以改变,代码示例如下:

#include <stdio.h>
#include <stdlib.h>
int main()
{    
    int a = 10;
    int b = 20;
    // const 修饰 *p
    int const * p = &a;
    printf("改变前的地址的值和地址:\n地址上的值:%d\n地址:%p\n", *p, p);
    printf("====== 分割线=========\n");
    // *p = 100; 会报错,因为指向的地址的值不可以改变
    p = &b;
    printf("改变后的地址的值和地址:\n地址上的值:%d\n地址:%p\n", *p, p);
    system("pause");
    return 0;
}
/*
改变前的地址的值和地址:
地址上的值:10
地址:001BFEA0
====== 分割线=========
改变后的地址的值和地址:
地址上的值:20
地址:001BFE94
*/

const 修饰 p

const修饰 p即:int * const p;,此时可改变地址上的值,但是并不可以改变地址!示例代码如下:

#include <stdio.h>
#include <stdlib.h>
int main()
{    
    int a = 10;
    int b = 20;
    // const 修饰 *p
    int * const p = &a;
    printf("改变前的地址的值和地址:\n地址上的值:%d\n地址:%p\n", *p, p);
    printf("====== 分割线=========\n");
    // p = &b; 会报错,因为指向的地址的值不可以改变
    *p = 100;
    printf("改变后的地址的值和地址:\n地址上的值:%d\n地址:%p\n", *p, p);
    system("pause");
    return 0;
}
/*
改变前的地址的值和地址:
地址上的值:10
地址:0073FE2C
====== 分割线=========
改变后的地址的值和地址:
地址上的值:100
地址:0073FE2C
*/
最后修改:2019 年 04 月 18 日 06 : 37 PM

发表评论