关于字符串常量和字符串的问题,求解
发布网友
发布时间:2022-04-20 12:14
我来回答
共4个回答
热心网友
时间:2022-04-20 13:43
什么是字符串常量?常量是不能改变的。
字符串“1234”就不能用STR代替啊,而STR就只能代替“12345”嘛?
TR只能S替代“12345”?define的作用就是用来替代嘛,那你得知道用define的优点:
1,你定义的STR是“12345”,以后需要用到“12345”的地方就不用再麻烦的用“12345”了,直接使用STR.或许你感觉不到它的方便,那你可以这样:#define PI 3.141592657 用到圆周率的时候你只需用PI就行了,不用再3.1412657...什么的打字了,或者这样: #define A "you can deal some date easiiy by this way". A是不是比这一坨打字方便多了?如果一个程序使用10000次 "you can deal some date easiiy by this way"你会觉得define真好。
2,你的程序里写的PI是3.141592657,可是如若有一天PI的值突然被公布是错的,应该是0.02,那你的程序用了PI的数值1000000次,你得改那么多次?no,这时候你以前用若了define,你只需把#define PI 3.141592657改成 #defne PI 0.02,就是这么随意。注意:这里PI的值改变了,你可以随便改。这就是它的作用。
热心网友
时间:2022-04-20 15:01
比如你char *p = "xxx";这样就是字符串了。
其实你说的"12345"也是字符串,但是为什么选C呢?
你看好题目,STR宏代替的是什么?宏的概念中没有什么常量变量的概念,宏定义就是替换,仅仅就是替换。你替换的是数值就是数值,你替换的是字符串就是字符串。
本身"12345"是字符串,但是STR替换的就是一个字符,因为宏就是替换而已,不设计什么常量变量。
热心网友
时间:2022-04-20 16:36
字符串常量:字符串中的字符依次存储在内存中一块连续的区域内,并且把空字符' \0'自动附加到字符串的尾部作为字符串的结束标志。故字符个数为n的字符串常量在内存中应占(n+1)个字节
这里STR进行宏替换时,只会替换成字符串12345,不会再后面加'\0'的。
所以C。
热心网友
时间:2022-04-20 18:27
字符串常量貌似也要事先定义一个常量名追问STR算常量名么亲?
追答STR是宏名,所以说那是字符串而不是字符串常量了啊