zoukankan      html  css  js  c++  java
  • C语言const关键字的作用

     1 #define _CRT_SECURE_NO_WARNINGS
     2 #include <stdio.h>
     3 #include <string.h>
     4 #include <stdlib.h>
     5 #include <math.h>
     6 #include <time.h>
     7 #include <Windows.h>
     8 
     9 #define N 10        //定义常量常用方法
    10 
    11 //const修饰常量
    12 int main0301(void)
    13 {
    14     const int a = 10;
    15 
    16     //a = 200;        //不可以修改
    17 
    18     int* p = &a;
    19     *p = 677;
    20     printf("a = %d
    ",a);        //借助指针可以修改const普通变量的值。
    21 
    22     system("pause");
    23     return EXIT_SUCCESS;
    24 }
    25 
    26 //const修饰指针
    27 int main(void)
    28 {
    29     int a = 10;
    30     int b = 20;
    31     int const* p = &a;
    32     printf("p == &a  ==  %p
    ",p );
    33 
    34     //*p = 500;        //【失败】将a的值,改为500,不能改
    35 
    36     p = &b;    //【成功】可以修改p变量的内容
    37 
    38     printf("p == &b  ==  %p
    ",p);
    39     printf("*p = %d
    ", *p);
    40 
    41     return EXIT_SUCCESS;
    42 }
    43 
    44 //const关键字作用:限制指针所指向的内存空间,为只读(不允许修改)

    main函数运行的结果:

    打个比方,变量a存着一座城堡【int a = 10;】,

    变量b存着一处村庄。【int b = 20;】

    指针*p是一个路牌,上面写着城堡的地址并指向城堡【int const* p = &a;】。

    使用const关键字修饰指针*p以后,你不能改变量a里存着城堡这个内容(限制指针所指向的内存空间,为只读,不允许修改)。【*p = 500;失败,编译不通过】

    但是你可以修改路牌指针*p的内容【p = &b;】,把上面写着的地址改成&b。

    这样这个路牌就指向变量b村庄,用printf打印,打印出来的值就是村庄。【printf("*p = %d ", *p);,结果是*p = 20 】

    结论:使用const修饰指针相当于保护了变量内容不会被间接引用修改,只能修改指针指向的地址。

  • 相关阅读:
    【Leetcode】120.Triangle
    【编程珠玑】第一章位图排序
    【Python】Xml To Excel
    【Django】git建仓上传时遇到的小问题
    【C++】 网络编程 01
    2018.09.20python学习第八天
    2018.09.19python作业
    2018.09.19python学习第七天part2
    2018.09.19python学习第七天part1
    2018.09.18python学习第六天part3
  • 原文地址:https://www.cnblogs.com/zengyu1234/p/13870049.html
Copyright © 2011-2022 走看看