设为首页 加入收藏

TOP

C语言的单引号和双引号实例讲解
2018-04-24 06:06:28 】 浏览:418
Tags:语言 引号 实例 讲解

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语言怎么求得一个32位数的原码、..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目