c++ 字符串常量(C++字符常量中的字符过多问题)

本文目录
- C++字符常量中的字符过多问题
- c++里指向字符串常量的指针和指向字符串的常量的指针有什么区别啊
- c++中的字符常量和数字有啥区别
- C++ 字符串常量
- C++ 如果在类中定义字符串常量
- c++字符常量输入的时候,加不加单引号有什么区别
C++字符常量中的字符过多问题
字符常量是用单引号的单个字符,字符串常量是用双引号的字符序列,这就是它们的最大区别。至于你说的问题‘\t\b’是错的.\n,\b,\t是转义字符,c语言把它们视为一个字符。两个转义字符肯要用双引号。
c++里指向字符串常量的指针和指向字符串的常量的指针有什么区别啊
指向
"字符串常量"
和
指向字符串的"
常量的指针"
前者字符串是常量,
后者指针是常量.
常量就是
"不许修改的量",
所以
前者
"不许修改字符串",
后者是
"不许修改指针"
例如:
const
char*
p
=
"hello";
//
指向
"字符串常量"
p
=
’X’;
//
错误!
想要修改字符串的第一个字符.
但是常量不允许修改
p
=
p2;
//
正确!
让p指向另外一个指针.
char*
const
p
=
"hello";
//
指向字符串的"
常量的指针"
p
=
’X’;
//
正确!
允许修改字符串,
因为该字符串不是常量
p
=
p2;
//
错误!
指针是常量,
不许修改p的指向
顺便说一句.
char
const
*
和
const
char*
是一样的.
const
的位置在char左边还是右边都一样.
常量指针的const应当写在
*星号的右边.
指向常量字符串的常量指针的写法是
const
char*
const
p
=
"xx";
要2个const
c++中的字符常量和数字有啥区别
心里的形式符号就是他的一个格式而已。
用单撇号括起来的一个字符就是字符常量。如‘a’,‘#’,‘%’,‘D’是合法的字符常量,在内存中占一个字节。注意:
1、字符常量只包括一个字符,如‘AB’是不合法的。
2、字符常量区分大小写字母,如’A’和‘a’是两个不同的字符常量。
3、撇号(’)是定界符,而不属于字符常量的一部分。
所谓字符常量,就是用英文单引号括起来的一个字符。在使用字符常量时应该注意:
1、单引号内的大小写字符代表不同的字符常量,例如‘Y’、‘y’是两个不同的字符常量。
2、字符常量只能用英文单引号括起来,不能用双引号。例如“Y”不是一个字符常量,而是一个字符串。
3、单引号内如果是一个空格符,也是一个字符常量。
4、单引号内只能包含1个字符,‘xyz’写法是错误的。但超过1个的字符的话,除最后一个外前面的会自动失效,当然这在编程使用中应该避免。
以上内容参考:百度百科-字符常数
C++ 字符串常量
用char*定义常量字符串是c++里c的遗物
c++原则上要求适用const
char*,但已存在的大部分c代码都是使用的char*这种形式,所以为了兼容这些代码,c++也允许char*这种定义常量字符串的方式。
字符串常量的确是静态存储的,不管存在什么地方,以什么样的方式存储,拿出来用时都是c风格字符串的形式,所以也不存在浪费内存,因为你存它就是为了用。
C++ 如果在类中定义字符串常量
在C中定义字符串有下列几种形式:字符串常量,char数组,char指针 1.字符串常量 即:位于一对双括号中的任何字符。双引号里的字符加上编译器自动提供的结束标志\0字符,作为一个字符串存储在内存中。如:printf(%s,hello); //hello 如果字符串文字中间没有间
在C中定义字符串有下列几种形式:字符串常量,char数组,char指针
1.字符串常量
即:位于一对双括号中的任何字符。双引号里的字符加上编译器自动提供的结束标志\0字符,作为一个字符串存储在内存中。如:printf("%s","hello"); //"hello"
如果字符串文字中间没有间隔或间隔的是空格符,ANSI C 会将其串联起来。例:
char greeting = "hello,and" "how are" "you";
等价于:
char greeting = "hello,and how are you";
字符串常量属于静态存储类。静态存储是指如果在一个函数中使用字符串常量,即使是多次调用了这个函数,
该字符串在程序的整个运行过程中只存储一份。整个引号的内容作为指向该字符串存储位置的指针。这一点与
把数组名作为指向数组存储位置的指针类似。
2.字符串数组及其初始化
初始化例子:
char m = "hello,world"; //定义字符串数组时必须指定数组大小(整型常量),在指定大小时,要确保数组的大小比预定的大一个,因为编译器会自动添加’\0’。
//多余的元素会初始化为’\0’
char m={’h’,’e’,’l’,’\0’}; //注意标志结束的空字符,若没有它,得到的只是一个字符数组而不是字符串
3.利用char指针定义字符串
char *m = "hello,world"; //自动添加’\0’
注意:此时字符串指针m指向字符串常量,不成用*(m+1)=’o’修改此常量,因为这个字符串常量放在常量区不能被修改
4.数组和指针
数组形式和指针形式有什么不同呢?
数组形式: char m = "hello,world";
指针形式: char *m = "hello,world";
数组形式:
编译器会把数组名m看作是数组首元素的地址&m的同义词,m是个地址常量。可以用m+1来标识数组里的下一个元素,但不能使用++m,增量运算符只能在变量前使用, 而不能在常量前使用。
m在计算机内存中被分配一个有40个元素的数组(其中每个元素对应一个字符,还有一个附加的元素对应结束的空字符’\0’)。每个元素都被初始化为相应的字符。
通常,被引用的字符串存储在可执行文件的数据段部分;当程序被加载到内存中时,字符串也被加载到内存中,把被引用的字符串复制到数组中
指针形式:
指针形式(*m)也会在静态存储区为字符串预留空间。此外,一旦程序开始执行,还要为指针变量m另外预留一个存储位置,以在该指针变量中能够存储字符串的地址。
m指向字符串的第一个字符,可用++m指向第二个字符。 指针m是个变量。
c++字符常量输入的时候,加不加单引号有什么区别
char c=’a’; 声明c 是 char 型变量,初始化 数值等于 字符常量 ’a’, 十进制数值 97, 单引号括起的叫字符常量,相当于1字节整型量。’a’,’B’,’3’,’\n’,’\t’ ... 这些都是字符常量。\x0d\x0a \x0d\x0achar c=a; 声明c 是 char 型变量,初始化 数值等于 变量 a 的当前值。a 不带单引号,是变量名字。\x0d\x0a如果有:\x0d\x0achar a=32;\x0d\x0achar c=a;\x0d\x0a那么 c 等于十进制数值32, 对应的 字符 是 ’ ’ (空格符)。\x0d\x0a \x0d\x0a如果有:\x0d\x0achar a=97;\x0d\x0achar c=a;\x0d\x0a那么 c 等于十进制数值97, 对应的 字符 恰巧 等于 ’a’\x0d\x0a====\x0d\x0a现在说 输入:\x0d\x0achar c;\x0d\x0acin 》》 c; // 输入\x0d\x0acout 《《 c 《《 endl;\x0d\x0a输入时 键盘拍 a, 读到 c 里 是 a 的 ASCII 码值\x0d\x0a如果 输入时 键盘拍 ’a’ , 读到 c 里 是 单引号 ’ 的 ASCII 码值,残留了 a’ 在输入流里。\x0d\x0a所以,输入时 拍 a, 不要 单引号。

更多文章:
avantage怎么设置为中文(Avantage安装丢失GIT)
2026年10月15日 03:00
activex控件未注册怎么办(登陆视频监控网页时提示activex控件未注册,怎么解决)
2026年10月14日 20:30
excel连接sql数据库教程(excel怎么连接sql数据库)
2026年10月14日 19:40






