const分析

一:

const只读变量

—— const修饰的变量是只读的,本质还是变量

—— const修饰的局部变量在栈上分配空间

—— const修饰的全局变量在全局数据区分配空间

—— const只在编译期有用,在运行期无用

注:———————————————————————————————————

const修饰的变量不是真的常量,它只是告诉编译器该变量不能出现在赋值符号的左边

在现代C语言编译器中,修改const全局变量将导致程序崩溃

标准C语言编译器不会将const修饰的全局变量存储与只读存储区,而是存储于可修改的

全局数据区,其值依然可以改变

——————————————————————————————————————

二:

 

三:

const修饰的局部变量

四:

const修饰的全局变量

五:

const修饰的全局变量

g_cc这个全局变量 由于const,被存储于 只读存储区, 也就是gcc编译器将const修饰的全局变量存储于只读存储区,而不是普通的全局数据区, 那么通过指针p修改g_cc的时候,修改的是只读存储区里面的内存,程序出现崩溃

 

在现代C语言编译器中,修改const全局变量将导致程序崩溃

标准C语言编译器不会将const修饰的全局变量存储与只读存储区,而是存储于可修改的

全局数据区,其值依然可以改变

 

六:

七:

const 修饰函数参数和返回值

—— const修饰函数参数表示在函数体内不希望改变参数的值

—— const修饰函数返回值表示返回值不可改变,多用于返回指针的情形

注:——————————————————————————————————

C语言中的字符串字面量存储与只读存储区中,在程序中需要使用const char*指针

example:

           #include <stdio.h>

           int main()

           {

                      const char* s = "XXXX XXXX"; //字符串字面量

                      return 0;

           }

————————————————————————————————————

八:

总结:

           |--------> 标准C编译器 ------> const变量:只读,值可改变

const  |---------> 现代C编译器 |-------> const全局变量:只读,值不可改变

                                                |-------> const局部变量 |-------->  static局部变量:只读,值不可改变

                                                                                      |---------> 普通局部变量:只读,值可改变

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值