0
点赞
收藏
分享

微信扫一扫

const变量的作用

1kesou 2022-01-17 阅读 43
c#

const 变量表示常量,更加准确的表达应该是只读的变量,通常可理解为不能变。通常用来修饰指针和数组,修饰变量用的较少。

c语言中const修饰的全局变量存储在只读数据段,编译期最初将其保存在符号表中,第一次使用时为其分配内存,在程序结束时释放。const修饰的局部变量存储在栈中,代码块结束时释放。

c语言中可以通过指针对const局部变量进行修改,而不可以对const全局变量进行修改。因为const全局变量是存储在只读数据段。(可以参考下面的例子,图2)

注意:他只是不能显式的修改,可以通过一定的方法隐式的去修改const修饰的变量。

const在修饰指针变量时的基本用法如下:

const char *p ="helloword";
char const *p ="heklloword";  //两者表达的意思一样 表示常量字符串

char * const p;  //表示指向的地址不能变,内容却可以刷新,比如LCD的Framebuffer

const char * const p; //表示指向的地址不能边,内容也不能变,比如 ROM设备

如何隐式的去改变const修饰的变量:

#include <stdio.h>

int main()
{
  const int a =0x1234;
  int b =0x1122;
  char *p =&b;
  *(p+1)= 100;  // p[1]=100; //两种皆可,通过这种方法可改变a的值 指针操作
  return 0;
}


//或者用数组的方法也可以 
int main()
{
char buf[4];
const int a =0;
buf[4]=4;  //数组越界访问,改变a的值
return0;
}

这种用法不常见,知道就可以了,可以不掌握,用作常量比较多,如果有较大的数组可以定义为const全局数组,这样可以节省堆栈空间,在嵌入式的开发中节约资源很重要。

举报

相关推荐

0 条评论