我是靠谱客的博主 慈祥鞋子,最近开发中收集的这篇文章主要介绍const全局变量和const局部变量是否可以修改,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

注意:以下程序编辑和运行于centos7 gcc环境,不同的编译器可能略有不同

#include <stdio.h>
#include <stdlib.h>

const int a = 10;

int main()
{
//      int *pa = &a; //warning: initialization discards ‘const’ qualifier from pointer target type [enabled by default]
//      *pa = 1000;
//      printf("a = %d n,",a);
        
//      a = 100; //error: assignment of read-only variable ‘a’
//      printf("a = %d n,",a);

		int *pza = (int *)&a;
//      *pza = 10000;      //./test       运行时报错 Segmentation fault (core dumped)
        printf("a = %d n,",a);


        const int b = 20;
//      b = 200; //error: assignment of read-only variable ‘b’

//      printf("b = %d n",b);  
//      int *pb = &b; //warning: initialization discards ‘const’ qualifier from pointer target type [enabled by default]

//      *pb = 2000;
//      printf("b = %d n",b);
        int *pzb = (int *)&b;
        *pzb = 20000;
        printf("b = %d n",b);

        return 0;
}
                                                              
./test
a = 10 
,b = 20000 

  1. const局部变量存储在栈中,可通过指针修改其值;(注意:不能直接修改)
  2. const全局变量存储在全局存储空间,其值只有可读属性,所以修改会导致崩溃 (直接和间接都不能修改)
  3. int *pza = (int *)&a; a的地址类型是const int,所以必须强制类型转换才可以赋值给int *类型的变量。

最后

以上就是慈祥鞋子为你收集整理的const全局变量和const局部变量是否可以修改的全部内容,希望文章能够帮你解决const全局变量和const局部变量是否可以修改所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部