摘要:本文主要向大家介绍了C/C++知识点之C语言的单引号和双引号实例讲解,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。
本文主要向大家介绍了C/C++知识点之C语言的单引号和双引号实例讲解,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。
例如:
'a'表示字符字面量,占1个字节,'a' + 1表示 'a'的ASCII码加1,结果为'b'
"a"表示字符串字面量,占两个字节,"a" + 1表示指针运算,结果指向"a"的结束符'\0'
来看一段下边的代码:
#include
int main()
{
char* p1 = 1 ;
char* p2 = '1';
char* p3 = "1";
printf("%s, %s, %s", p1, p2, p3);
printf('\n');
printf("\n");
return 0;
}
编译运行结果如下:程序奔溃。
\
下边我们来分析分析为什么程序会崩溃,首先来看几个知识点:
-字符字面量被编译为对应的ASCII码
-字符串字面量被编译为对应的内存地址
-printf的第一个参数被当成字符串内存地址
-内存的低地址空间不能在程序中随意访问
有了如上几个知识点,那么上边代码的三个指针变量,指向的内存就可表示为如下:
\
\
从上图的内存分布,我们知道,代码已经试图去访问低地址了,所以会产生程序奔溃。
最后留一段小代码供大家分析,请思考如下代码执行后发生什么:
#include
int main()
{
char c = " ";
while( (c == "\t") || (c == " ") || (c == "\n") )
{
scanf("%c", &c);
}
return 0;
}
提示:char c = "string"发生了什么?
-编译后字符串"string"的内存地址被赋值给变量c
-内存地址占用4个字节,而变量c只占用1个字节
-由于类型不同,赋值后产生截断
总结:
1、单引号括起来的字符代表字符指针
2、双引号括起来的字符代表字符指针
3、C编译器接受字符和字符串的比较,无任何意义
4、C编译器允许字符串对字符变量赋值,只能得到错误
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号