精华内容
下载资源
问答
  • 2021-05-18 09:44:21

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

    导语:C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。下面我们来看看C语言单引号和双引号的`区别,希望对大家有所帮助。

    最近的C语言课在教字符串,貌似N多同学搞不清楚单引号和双引号的区别,有人还以为在C语言里用哪个都可以...其实C语言中的单引号和双引号含义是一点也不一样滴...

    看别人讲指针与数组时也有点弄不清sizeof一个双引号括起来的数组竟然值会+1:如

    char a[]="123456";

    sizeof(a)的值为7

    1、含义不同。

    用单引号引起的一个字符实际上代表一个整数,整数值对应于该字符在编译器采用的字符集中的序列值。而一般我们的编译器采用的都是ASCII字符集。因此's'的含义其实和十进制数115的含义是一致的。

    而用双引号引起的字符串,代表的是一个指向无名数组起始字符的指针。

    2、大小不同。

    用单引号引起的一个字符大小就是一个字节。

    而用双引号引起的字符串大小是字符的总大小+1,因为用双引号引起的字符串会在字符串末尾添加一个二进制为0的字符'\0'。

    更多相关内容
  • C语言单引号和双引号

    千次阅读 2021-03-31 11:57:27
    引号表示的意义 1.C语言中的单引号用来表示字符字面量 2.C语言中的双引号用来表示字符串字面量 ‘a’表示字符字面量,在内存中占1个字节,‘a’+1表示’a’的ASCII码加1,结果为’b’ "a"表示字符串字面量,在内存中...

    引号表示的意义

    1.C语言中的单引号用来表示字符字面量
    2.C语言中的双引号用来表示字符串字面量

    ‘a’表示字符字面量,在内存中占1个字节,‘a’+1表示’a’的ASCII码加1,结果为’b’

    "a"表示字符串字面量,在内存中占2个字节,“a”+1表示指针运算,结果指向"a"结束符\0’

    实例分析一下:

    #include <stdio.h>
    
    int main()
    {
    	char* p1 = 1;
    	char* p2 = '1';
    	char* p3 = "1";
    
    	printf("%s,%s,%s\r\n",p1,p2,p3);
    	return 0;
    	
    }
    

    运行结果如下,两个警告,发生段错误。
    在这里插入图片描述
    分析前讲几个知识点:
    (1)字符字面量被编译为对应的ASCII码
    (2)字符串字面量被编译为对应的内存地址
    (3)printf的第一个参数被当成字符串内存地址
    (4)内存的低地址空间不能在程序中随意访问

    在这里插入图片描述
    给p1指针的初始值是1,然后这个1被当成了一个地址,p1指向了地址为为0x01的内存空间。
    同理,p2指针的初始值是字符字面量’1’,十进制的49,ASCII码的0x31,所以指向了地址为0x31的内存空间。这两个指针,p1和p2处于内存的低地址范围。
    在我们的程序中,内存地址低于0x08048000的地址是不能访问的,一旦访问就会产生段错误,字符串被编译后的地址,都是大于0x08048000这个地址的,大于这个地址的内存空间是可以访问的。

    还有一个就是printf,我们都是使用""双引号括起来的,如果使用单引号,同样会引起段错误,’\n’的ASCII码地址为0x10,低地址空间。

    再来分析一个

    char c = "string";
    

    这句代码发生了什么?
    编译后,将string的内存地址给了变量c,但是内存地址大小为四个字节,而char c 只有一个字节,由于类型不同,发生了截断。
    tips:要专业,把警告当错误处理。

    小结

    (1)单引号括起来的单个字符代表整数
    (2)双引号括起来的字符代表字符指针
    (3)C编译器接受字符和字符串的比较,无任何意义
    (4)编译器允许字符串对字符变量赋值,只能得到错误

    展开全文
  • c语言中单引号和双引号的区别引导语:单引号和双引号都可以作为字符串的开始符和关闭符,并且只能‍同一种单或者双引号来定义开始和结束。以下是百分网小编分享给大家的c语言中单引号和双引号的区别,欢迎阅读!问题:...

    c语言中单引号和双引号的区别

    引导语:单引号和双引号都可以作为字符串的开始符和关闭符,并且只能‍同一种单或者双引号来定义开始和结束。以下是百分网小编分享给大家的c语言中单引号和双引号的区别,欢迎阅读!

    问题:

    从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_IPV4;

    #include

    // Function: To extract HEX value of IP address from string expression.

    IPADDR_IPV4 parse_IPString(const char *str, u8 strlen) {

    IPADDR_IPV4 ipv4;

    char tmpBuf[4] = {0};

    u8 k;

    u8 inx = 0;

    u8 j = 0;

    // Dprintf("The ch_ip is:%sn", ch_ip);

    for (k=0; k

    if (str[k] != '.') {

    // Dprintf("k-inx: %dn", k-inx);

    memcpy(&tmpBuf[k-inx], &str[k], 1);

    }

    else {

    inx = k + 1;

    // Dprintf("inx: %d, tmpBuf: %sn", inx, tmpBuf);

    ipv4.addr_ipv4[j++] = strtol(tmpBuf, NULL, 10);

    memset(tmpBuf, 0, sizeof(tmpBuf));

    continue;

    }

    // Dprintf("tmpBuf: %sn", tmpBuf);

    ipv4.addr_ipv4[j] = strtol(tmpBuf, NULL, 10);

    }

    // Dprintf("ipv4 is: ");

    // for (k=0; k

    // Dprintf("%d", ipv4.addr_ipv4[k]);

    // }

    // Dprintf("n");

    return ipv4;

    }

    应用如下:

    复制代码 代码如下:

    char* ch_ip = NULL;

    IPADDR_IPV4 ipv4Addr;

    ch_ip = (char*)malloc(16);

    memset(ch_ip, 0, 16);

    // parse IP address

    ch_ip = getIPAddr();

    // convert IP address from string to HEX expression

    ipv4Addr = parse_IPString(ch_ip, strlen(ch_ip));

    3. 注意事项:

    原来进行字符比较的时候,用的是if (str[k] != ".")而不是if (str[k] != '.'),结果一直不对。

    后来反复 查找原因,才知道单引号''和双引号“”的区别:

    (1)。含义不同。

    单引号引起的一个字符代表一个整数,整数值对应于该字符在ASCII字符集中的序列值;

    双引号引起的都是字符串,哪怕只有一个字符也是字符串,双引号引起的一个字符代表一个指向无名数组起始字符的指针;

    比如:'.'代表十进制46,十六进制0x2E;

    而"."代表指向起始字符为"."的某数组的指针;

    (2)。大小不同。

    单引号引起的一个字符大小就是一个字节;

    双引号引起的一个字符大小是两个字节,因为双引号引起的字符串会在字符串的末尾添加一个0x00作为字符串的结束标识。

    【c语言中单引号和双引号的区别】相关文章:

    展开全文
  • c语言单引号的用法指导

    千次阅读 2020-12-22 05:21:01
    c语言单引号的用法指导C语言中用单引号引起的一个字符实际上代表一个整数,整数值对应于该字符在编译器采用的字符集中的序列值。而一般我们的编译器采用的都是ASCII字符集。因此's'的含义其实和十进制数115的含义是...

    c语言单引号的用法指导

    C语言中用单引号引起的一个字符实际上代表一个整数,整数值对应于该字符在编译器采用的字符集中的序列值。而一般我们的编译器采用的都是ASCII字符集。因此's'的含义其实和十进制数115的含义是一致的。下面小编给大家整理了c语言单引号的用法,供大家参阅。

    单引号和双引号在C中的意义完全不同,包围在单引号中的一个字符只是编写整数的另一种方法。这个整数是给定的字符在实现的'对照序列中的一个对应的值,即ASCII码值。因此在一个ASCII实现中,‘a’和0141或97表示完全相同的东西,而一个包围在双引号中的字符串,只是编写一个有双引号之间的字符和一个附加的二进制为零的字符所初始化的一个无名数组的指针的一种简短方法。

    使用一个指针来代替一个整数通常会得到一个警告消息(反之亦然),使用双引号来代替单引号也会得到一个警告消息(反之亦然)。但通常对不检查参数类型的编译器却除外。因此用printf('

    ');来代替printf("

    ");通常在运行时得到奇怪的结果。因为'

    '代表一个整数,它被转换为了一个指针,这个指针所指向的内容是没有意义的。

    由于一个整数通常足够大,以至于可以放下多个字符,一些C编译器允许在一个字符常量中存放多个字符,这意味着用'yes'来代替'"yes"将不会被发现,后者意味着“包含yes和一个空字符的四个连续存储区域中的第一个的地址”,而前者意味着“在一些实现定义的样式中表示由yes联合构成的一个整数”。这两者之间的任何一致性都是巧合。

    简单理解,单引号实际是整数的另外的一种表达方式,该整数是单引号里字符的ASCII码;而双引号里是真正的字符,表示由头指针指向的一片连续区域存储的字符。

    展开全文
  • C语言中的单引号和双引号的区别首先肯定地说,二者是有区别的,不是说用谁都一样。1、实质区别,代表的含义不同'A'代表的是一个整数,而且这个整数对应的是编译器所采用的字符集中的字符序列对应的数值。所以'A'跟...
  • C语言 单引号和双引号的区别

    万次阅读 多人点赞 2019-03-12 15:26:50
    笔者在编写C时,使用以下语句时出错: ...意思是从int到 char * 是非法的转换,这就意味着后面的字符串被程序认定为int型,实际上就是单引号和双引号的使用区别造成了这个错误。 不同之处 1、含义不同 用...
  • C语言 单引号和双引号

    万次阅读 多人点赞 2018-04-22 22:59:36
    刚开始学习C语言时没有注意过这个问题,最近看了狄泰软件的唐老师C进阶视频时发现这里面还有东西需要注意的,下面我讲下,希望对新人有所帮助(这里面讲的内容主要参考狄泰软件的唐老师C进阶教程中的单引号和双引号...
  • C语言中单引号与双引号的区别

    千次阅读 2021-05-18 11:09:03
    C语言中单引号与双引号的区别单引号和双引号在C中的意义完全不同,包围在单引号中的一个字符只是编写整数的另一种方法。这个整数是给定的字符在实现的对照序列中的一个对应的值,即ASCII码值。以下是小编为大家搜索...
  • 问题:从c++文件中将std:string转换为char*后,返回包含IP地址的char*,需要将该字符串char*中的IP地址提取出来; 解决办法:1. 解决思路:IP地址最长为12字符+3句点=15字符,一般性表示为192.168.111.111;...
  • C语言中单引号和双引号

    千次阅读 2018-09-04 15:51:57
    单引号里面放的是字符,双引号里面放的是字符串。 单引号 # include &lt;stdio.h&gt; int main() { char name[]={'h','e','l','l','o',',','w','o','r','l','d'}; char *p; p=name; int i; for...
  • C语言中的单引号用来表示字符字面量 C语言中的双引号用来表示字符串字面量 'a'表示字符字面量,在内存中占1个字节,'a'+1表示'a'的ASCII码加1,结果为'b' "a"表示字符串字面量,在内存中占2个字节,"a"+1表示指针...
  • 单引号引起来的一个字符实际上代表一个整数,整数值对应于该字符在编译器采用的字符集中的序列值。因此,对于采用ASCII字符集的编译器而言,'a'的含义是0141(八进制)或者97(十进制)严格一致。 用双引号引起来...
  • 我想知道单引号C语言的具体作用

    千次阅读 2021-05-18 13:29:29
    \n",注意C语言里字符串要用双引号包起来,所以这里面的双引号不能丢。你把"Hello World!\n"给了printf(), 那按我们的理论printf()会实现一种功能,它的功能是啥? 运行程序! 看到了吧,它在屏幕上给你“输出”了...
  • c语言中的单引号用来表示字符字面量c语言中的双引号用来表示字符串字面量例如:'a'表示字符字面量,占1个字节,'a' + 1表示 'a'的ascii码加1,结果为'b'"a"表示字符串字面量,占两个字节,"a" + 1表示指针运算,结果...
  • C语言中ACSII码字符单引号和双引号经常出现,有什么区别呢? 1、应用场景 单引号' '用来表示字符常量,表示单个字符 例如: char a; a='A'; a=' 1'; 双引号" "用来表示含有0到多个字符常量的字符串 char p1...
  • 单引号和双引号 截然不同,单引号 表示 字符,双引号 表示 字符串。 Python语言 两者都可以用,不用区别,都是字符串。 Matlab语言 早期的版本,只能用 单引号,表示的是字符串。双引号用不成,会报错。 从 R2017a ...
  • ‘x’是字符常量,占1字节,"x"是字符串常量,相当于’x’+’\0’,占2字节,这都没问题,但怎么理解类似 ‘abcd’ 这种常量:即用单引号括起来的多个字符?以下是我的对这个问题的思考过程: 1、先看代码: char c1...
  • 一直对于单引号和双引号有些混淆,本节讨论一下单引号和双引号的问题。ide1、基本知识spa一、C语言中单引号用来表示字符字面量指针二、C语言中双引号用来表示字符串字面量blog好比:'a'表示字符字面量,在内存中占1...
  • C语言中ACSII码字符单引号'和双引号"在程序中经常出现,很简单,但却是十分重要的语法标点符号,初学者容易混淆使用单引号在字符常量时使用,表示单个字符。例如:char c;c = 'a';c = '1';c = 'A';当在单引号中...
  • 13、C语言中的单引号和双引号

    万次阅读 多人点赞 2019-06-24 12:02:43
    —— C语言中的单引号用来表示字符字面量 —— C语言中的双引号用来表示字符串字面量 ‘a’表示字符字面量,在内存中占一个字节,‘a’+1表示‘a’的ASCII码加1,结果为‘b’。 “a”表示字符串字面量,在内存中...
  • 探索C语言中单引号与双引号的区别

    万次阅读 2015-01-27 00:22:10
    对这两个符号产生了兴趣,遂打开VS2010查看了单引号、双引号引起的字符在内存中的存储形式。 实验方式很简单,分别查看”yes”/’yes’/’ye’/’y’四种字符在内存中的存储形式,代码如下: int _tm
  • Anordinarycharacterliteralthatcontainsmorethanonec-charisamulticharacterliteral.Amulticharacterliteralhastypeintandimplementation-definedvalue.android代码,frameworks/base/include/m...
  • C语言单引号和双引号

    万次阅读 多人点赞 2018-04-08 21:59:02
    1.单引号和双引号C语言中的单引号用来表示字符字面量C语言中的双引号用来表示字符串字面量(指针)小贴士字符字面量被编译为对应的ASCII码字符串字面量被编译为对应的内存地址printf的第一个参数被当成字符串内存地址...
  • 单引号表示字符字面量,在内存中占一个字节 ‘a’+1表示’a’的ASCII码加一,结果以为’b’。 双引号表示字符字面量,在内存中占据两个字节 “a”+1表示指针运算,结果指向了"a"的结束符"\0"。 字符字面量被编译...
  • 单引号和双引号有何区别?
  • c语言中双引号和单引号In C you might find yourself using double quotes in some cases, and single quotes in other cases. 在C中,您可能发现自己在某些情况下使用双引号,而在其他情况下使用单引号。 In ...
  • C语言单引号问题

    千次阅读 2020-12-03 19:45:44
    C语言单引号问题 单引号的原理 C语言单引号实际上时将 ’ ’ 内的字符转化为ASCII码对应的整型值,并且在存储时占据一个字节 sizeof(char) // 第一个例子 int main() { char ch; ch = '?'; printf("%d, %c...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 51,864
精华内容 20,745
关键字:

c语言单引号怎么使用