C语言字符串常量的一个问题。
发布网友
发布时间:2022-05-29 20:47
我来回答
共1个回答
热心网友
时间:2023-11-24 11:52
字符串遇到\0表示结束
第一个字符串就相当于"abc123",那么长度为6
第二个字符串就相当于"abc",那么长度为3
但是实际操作发现并非如此,如下程序:
#include <stdio.h>
{
char c1[0x20] = {0};
memcpy(c1, "abc123\01de\n", 0x20);
printf("%s\n", c1);
char c2[0x20] = {0};
memcpy(c2, "abc\09de\n", 0x20);
printf("%s\n", c2);
printf("%d\n", strlen(c1));
printf("%d\n", strlen(c2));
}
第一个字符串并不能正确识别"\0",而是将"\01"看做一个字符,"\n"是一个字符,表示换行,这个你应该知道,结果第一个字符串长度为10
第二个字符串可以正确识别"\0",所以第二个字符串长度为3
C语言 字符常量问题
答案选B A选项为字符串常量:字符串常量是由一对双引号括起的字符序列。B选项为字符常量:字符常量是用单引号括起来的一个字符。例如:'a'、'b'、'='、'+'、'?'都是合法字符常量。C还允许一种特殊形式的字符常量,就是以一个‘\’开头的字符序列。在C语言中,字符常量有以下特点:字符常量只...
呵呵,问一个C语言里字符串长度的问题。
字符串长度单位是字节个数。字符串长度 从 字符串开始计算,遇到 字符串结束符 结束,结束符 不算在 字符串 长度里。一对 单引号 括起的 是 一个 “字符常量”, 占 1个字节长度。用反斜杠开始的字符叫 转意/转义 字符。\" 表示1个双引号字符。1 表示字符 1 \43 表示 是 8 进制数 ...
想请教下关于C语言中的字符常量问题
'\'是转义字符,意思就是'\'后的字面不是原来的意思,最常见的就是'\n'表示换行,明白了这个,下面就好讲解了 \x表示的是十六进制,例如\xa表示的是10,\xf,表示的是15,\xff表示的是255(15*16+15)\o表示的是八进制,所以\028表示2*8+8=24 所以c是对的 至于B为什么不合法,因为么有\f...
C语言中指向字符串常量的指针问题
注意:你这个问题是个特例,在C语言里实际上是可以修改的,且在 TC 下可以通过。如果你用VC,也通过了编译,的确字符串常量是不能修改的,但是编译器并不认为p[0]='x'有任何错误,所以它编译的时候没有问题都,连接也不会有问题,但是运行的时候一定会出错。也就是能弹一个内存错误。如果你不想...
C语言里为什么字符指针变量指向的字符串常量中的内容是不可取代的?
指向字符串常量的话,这段常量字符串是存储在静态存储区的,内容不能修改。当然你可以让指针指到别的地方
关于c语言的一个问题
题目 ??答案很简单,因为字符串 abcd\b\123\xab ,系统会自动在最后补'\0'。 求字符串的长度时,系统只有读到了'\0'时,才会中止; 那为什么是“7” 个呢?首先,abcd 这里有4个,这个没问题吧;第二,你要明白,字符串是有“字符” 构成的,而字符 包括 ,“字符常量”和“控制字符”...
C语言字符串常量,字符数组占内存大小问题?
用函数求的长度其实就是字符串长度,而非占内存大小。因此长度是4,占内存是5,最后有个'\0'做结束符,不是'\n'。字符数组如果是字符串就是这规则,否则不是
c语言用指针定义字符串常量问题
有思考~真不错~你试试printf("%p\n%p\n%p\n",nam1,nam2,nam3);就是把取地址符去掉,这样就是打印的常量字符串的地址了。你打印出来的是新生成的三个指针变量的地址,确实不同;三个指针变量指向的地址确实是相同的(也就是常量字符串的地址),概念混淆了。
c语言字符与字符串问题
不是同一类型,字符'a'只占了一个字节,字符串的后面是有个结束符'\0',因此"a"实际的储存空间站两个字节,为{a,\0}
请教几个有关C语言的问题: 1、为什么‘cd’不能做为C语言合法常量?而0.1...
(1) 用单引号括起的是字符常量,'cd' 含2个字符,也不是转义字符,所以不是合法常量。0.1e+6 是合法的 E 格式 浮点数。(2)char a='aa'; 用单引号括起的是字符常量,'aa' 含2个字符,也不是转义字符,所以不是合法常量。'n' 是合法字符常量, '\x2d' 是合法字符常量, 单引号里...