在C语言里单引号和双引号的区别

—— C语言中的单引号用来表示字符字面量,编译为对应的ASCII码
—— C语言中的双引号用来表示字符串字面量,编译为对应的内存地址

‘a'表示字符字面量,在内存中占一个字节,‘a'+1表示‘a'的ASCII码加1,结果为‘b'。
“a”表示字符串字面量,在内存中占两个字节,“a”+1表示指针运算,结果指向“a”结束符‘\0'

分析:下面这段程序合法吗?

char* p1 = 1;          // p1指向地址0x00000001
char* p2 = '1';        // p2指向地址0x00000031
char* p3 = "1";        // p3指向地址0x080484d0

这三条语句是合法的,会出现警告,但是本质上并没有影响程序的运行

如果程序改成这样:

#include <stdio.h>
int main()
{
	char* p1 = 1;
	char* p2 = '1';
	char* p3 = "1";

	printf("%s,%s,%s\n", p1, p2, p3);   //出现段错误

	printf('\n');                       //出现段错误
	printf("\n");
	return 0;
}

小贴士:

1、字符字面量被编译为对应的ASCII码
2、字符串字面量被编译为对应的内存地址
3、内存的低地址空间不能在程序中随意访问

右上图可知,所有低于0x08048000的地址空间都不能访问,所以p1和p2都不能访问内存地址,会出现段错误·。

程序实例分析:

char c = “string”;

其实这个明显是错误的,因为字符串会编译为对应的内存地址,内存地址占4个字节,但是c只占一个字节,会产生截断,所以一般对于字符串,我们用指针来指向

char* p= “string”;

到此这篇关于在C语言里单引号和双引号的区别的文章就介绍到这了,更多相关C语言里单引号和双引号内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C语言实现简易网络聊天室

    本文实例为大家分享了C语言实现网络聊天室的具体代码,供大家参考,具体内容如下 业务逻辑: 1.客户端注册名字 2.告诉所有在线的客户端,XXX进入聊天室 3.新建一个线程为该客户端服务,随时接收客户端发送来的消息 4.当接收到一个客户端的消息时,向每一个客户端转发一份(群聊) 5.同时在线人数最多50人 任何客户端可以随意随时进入或退出客户端 服务端代码server.c #include <stdio.h> #include <stdlib.h> #include <stri

  • c语言中单引号和双引号的区别(顺利解决从字符串中提取IP地址的困惑)

    问题:从c++文件中将std:string转换为char*后,返回包含IP地址的char*,需要将该字符串char*中的IP地址提取出来: 解决办法:1. 解决思路:IP地址最长为12字符+3句点=15字符,一般性表示为192.168.111.111:可以从第一个字符开始解析,当不是'.'时,将所有字符保存下来,然后把所有保存下来的字符转换为16进制就可以了: 2. 程序如下: 复制代码 代码如下: typedef struct {    char addr_ipv4[4];} IPADDR_I

  • C语言中结构体和共用体实例教程

    目录 一.实验目的 二.实验内容 三.实验记录 3.1 候选人选票统计 3.2 print函数 3.3 链表 总结 一.实验目的 掌握结构体类型变量的定义和使用: 掌握结构体类型数组的概念和应用: 掌握链表的概念,初步学会对链表进行操作: 掌握共用体的概念与使用: 掌握指向结构体变量的指针. 掌握指向结构体数组的指针的应用. 二.实验内容 编写下列程序,然后上机调试运行. 对候选人得票的统计程序.设有3个候选人,每次输入一个得票的候选人的名字,要求最后输出各人得票结果. 编写一个函数print,

  • C语言函数的参数使用指针

    在c语言中实参和形参之间的数据传输是单向的"值传递"方式,也就是实参可以影响形参,而形参不能影响实参.指针变量作为参数也不例外,但是可以改变实参指针变量所指向的变量的值. #include <stdio.h> void swap1(int x,int y),swap2(int *px,int *py),swap3(int *px,int *py); int main(void) { int a=1,b=2; int *pa=&a,*pb=&b; swap1(

  • C语言实现简单的聊天室功能

    用C语言实现简单的聊天室功能,供大家参考,具体内容如下 服务器端 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<winsock.h> #pragma comment(lib, "ws2_32.lib") #define L 256 int main() { char SendBuf[L]; char ReceiveBuf[L]; int SendLen; int ReceiveLen; in

  • C语言链表详解及代码分析

    C语言链表详解附实例 什么是链表 链表是一种常见的重要的数据结构.它是动态地进行存储分配的一种结构.链表和数组比较,不用事先确定存储空间,而是根据需要开辟内存单元. 下图1是最简单的一种链表(单向链表)的结构 第 0 个结点称为头结点,它存放有第一个结点的首地址,它没有数据,只是一个指针变量.以下的每个结点都分为两个域,一个是数据域,存放各种实际的数据,如学号 num,姓名 name,性别 sex 和成绩 score 等.另一个域为指针域,存放下一结点的首地址.链表中的每一个结点都是同一种结构类

  • 在C语言里单引号和双引号的区别

    -- C语言中的单引号用来表示字符字面量,编译为对应的ASCII码 -- C语言中的双引号用来表示字符串字面量,编译为对应的内存地址 'a'表示字符字面量,在内存中占一个字节,'a'+1表示'a'的ASCII码加1,结果为'b'. "a"表示字符串字面量,在内存中占两个字节,"a"+1表示指针运算,结果指向"a"结束符'\0' 分析:下面这段程序合法吗? char* p1 = 1; // p1指向地址0x00000001 char* p2 = '

  • PHP 单引号与双引号的区别

    1.定义字符串 在PHP中,字符串的定义可以使用单引号,也可以使用双引号.但是必须使用同一种单或双引号来定义字符串,如:'Hello"和"Hello'为非法的字符串定义. 定义字符串时,只有一种引号被视为定义符,即单引号或双引号.于是,如果一个字符串由双引号开始,那么只有双引号被分析器解析.这样,你就可以在双引号串中包含任何其他字符,甚至单引号.下面的引号串都是合法的: Php代码 复制代码 代码如下: $s = "I am a 'single quote string' i

  • javascript单引号和双引号的区别和处理

    单引号和双引号其实没啥区别,看你自己习惯了 复制代码 代码如下: <input type="button" onclick="alert("1")">-------------------不正确 <input type="button" onclick="alert('1')">-------------------正确 双引号中再用双引号要这样: var str = "a

  • Shell脚本字符串单引号和双引号的区别浅析

    一.字符串基础知识 字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号.单双引号的区别跟PHP类似. 单引号 复制代码 代码如下: str='this is a string' 单引号字符串的限制: •单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的: •单引号字串中不能出现单引号(对单引号使用转义符后也不行). 双引号 复制代码 代码如下: your_name='qinjx' str="Hel

  • jquery 单引号和双引号的区别及使用注意

    可以执行的语法:$("ul li a").filter(":contains('佳能'),:contains('松下'),:contains('卡西欧')").css("color","red"); 错误的语法:$("ul li a").filter(":contains("佳能"),:contains("松下"),:contains("卡西欧&q

  • PowerShell中字符串使用单引号和双引号的区别

    本文介绍PowerShell开发时,在字符串中如何去包含变量.将变量包含在字符串中,最后得到的结果是将变量的值放入到了字符串中. 假如有一个字符串变量:$p = "PowerShell" 那么 $str="Hello $p",这时,$str的值是什么呢?且看下面的演示: 复制代码 代码如下: PS C:\Users\spaybow> $p="PowerShell" PS C:\Users\spaybow> $str="Hel

  • shell编程基础 单引号和双引号的区别

    下面用一个简单的shell程序要说明一下. debian:~/learn/shell# cat phonebook Alice Chebba 973-555-2015 Barbara Swingle 201-555-9257 Liz Stachiw 212-555-2298 Susan Goldberg 201-555-7776 Susan Topple 212-555-4932 Tony Iannino 973-555-1295 Stromboli Pizza 973-555-9478 deb

  • python里的单引号和双引号的有什么作用

    在Python当中表达字符串既可以使用单引号,也可以使用双引号,那两者有什么区别吗? python单引号和双引号的区别 简单来说,在Python中使用单引号或双引号是没有区别的,都可以用来表示一个字符串.但是这两种通用的表达方式,除了可以简化程序员的开发,避免出错之外,还有一种好处,就是可以减少转义字符的使用,使程序看起来更简洁,更清晰. 更多学习内容,请点击python学习网. 举个两个例子: 1.包含单引号的字符串 假如你想定义一个字符串my_str,其值为: I'm a student,则

  • C语言简明讲解单引号与双引号的使用

    目录 一.单引号和双引号 二.小贴士 三.程序实例分析1 四.程序实例分析2 五.容易混淆的代码 六.小结 一.单引号和双引号 C语言中的单引号用来表示字符字面量 C语言中的双引号用来表示字符串字面量 'a'表示字符字面量,在内存中占1个字节,'a'+1表示'a'的ASCII码加1,结果为'b' "a"表示字符串字面量,在内存中占2个字节,"a"+1表示指针运算,结果指向"a"结束符'\0' 下面看一段单引号和双引号本质的代码: #include

  • javascript 复杂的嵌套环境中输出单引号和双引号

    <a href="javascript:alert('这里有2个单引号一个双引号"\'\' :)');" >引号的嵌套</a> 单引号 ' 的 ASCII码是 39 双引号 " 的 ASCII码是34,所以我们可以用&#xxx;的形式来代替具体的符号.虽然变成了&#xxx;的形式,但是在嵌套环境中仍然要很当心.这里代码里的alert()使用的引号是单引号,alert里的字符串应该转义掉单引号.于是就有了 \'的形式.反之,就要

随机推荐