所有栏目 | 云社区 美国云服务器[国内云主机商]
你的位置:首页 > 云社区 » 正文

C语言中字符串常量的好处在哪里?

发布时间:2020-04-15 16:49:11

资讯分类:常量  c语言  字符串  好处  字符串  常量  指针
C语言中字符串常量的好处在哪里?

字符串常量最主要的好处是不可修改,其次还有占用内存少,易于维护


什么是字符串常量

形如“string const”,被双引号括起来的内容称为字符串常量。字符串常量具有两个性质,一是其中内容不可被修改,而是字符串常量属于静态存储类别,类似于静态局部变量,该字符串在整个生命周期只会被存储一次,即使函数被调用多次。双引号返回的是字符串的指针,指向存储该字符串的位置。


字符串常量的获取

主要有数组和指针两种方式。

  • 常量数组

const char str[] = "Please Pay attention to my taotiao, Thanks";

添加const 说明该字符串数组是内容不可变的,如果不添加const,则说明该字符串数组是内容可变的,但是变动的是该数组内容,并不是字符串常量本身。

  • 指针

const char *p = "Please Pay attention to my taotiao, Thanks";

指针p指向的是该字符串常量的地址。


其实,这两种形式并不完全相同。函数运行前,字符串已经存储在静态存储区。函数被调用时,才给数组分配内存,将字符串的内容拷贝到数组中。因此此时多出一个字符串副本,一个在静态存储区,一个在数组中

相对于指针,只会把字符串的地址赋值给指针,内存中还只有一个字符串,指针指向该字符串的位置。

总之,数组把静态存储区的字符串拷贝到数组中,而指针只把字符串的地址拷贝给指针,简言之,数组拷贝内容,指针拷贝地址


可以使用预定义,将字符串常量进行缩写,增加代码可读性,便于维护。

#define MSG "Please Pay attention to my taotiao, Thanks"

const char *p = MSG;

C语言中字符串常量的好处在哪里?

常量就是就是值不能变化或者说值只读的量。

C语言中有两种形式的常量,宏定义和const常量。

宏常量

我们定一个折扣discount为0.85:

#define DISCOUNT 0.85

宏定义是预处理,程序不会为它分配存储空间,编译器执行预处理的时候会把程序中遇到的所有DISCOUNT都替换为0.85。

const常量

我们定义const常量,格式为:

const float DISCOUNT 0.85f;

我们对比知道const常量俱有类型,这是和宏定义的不同之处;还有就是const常量在编译后存储在一个全局符号表中(或者静态数据存储区),其值只读无法修改。


常量的作用

常量作用就维护一个不能修改的变量。这样防止被人乱改,主要用于程序一个全局性质关键参数设置。比如你一个销售系统的折扣,你设置好了就不能随便更改。

还有就是一些数学上,物理学等一些常数直接记数字不是很方便就给它起个别名代替之。比如我们定义圆周率。



#define PI 3.1415926

注意:我们定义常量时候都是用的大写,这是编程届的一些需要墨守的成规。

C语言中字符串常量的好处在哪里?

如果楼主是因为爱好C编程,在学习或编程实战遇到这样的问题的话,建议楼主再可以把C语言的基础知识学扎实点。

C语言中的每种数据结构、变量、常量都有其应用范围,针对楼主提出的问题,如果编程中使用字符串常量,那我猜楼主的本意就是不想在程序运行中来修改这些常量,不论那本C教程中都对常量有描述,常量是在程序运行过程种不允许被修改的,这样做的好处:一是可以对一些重要数据进行保护,二是可以节省程序的内存开销。

如果楼主想修改字符串建议使用数组变量来存储,其实归根到底楼主还是要弄清楚变量和常量的本质区别,然后根据自己的实际需要来设计程序。

留言与评论(共有 0 条评论)
   
验证码:
Top