字符数组、字符指针和字符串

本文详细解释了字符数组、字符串及''之间的关系,同时指出字符指针使用时的常见误区。强调了字符串的定义及其结束标志,并说明了字符数组与字符串的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、字符数组、字符串和‘\0’关系。

字符数组就是元素为字符变量的数组,而字符串则是以'\0'(ASCII为0x00)为结束字符的字符数组。可见,字符数组不一定就是字符串。

而对于字符串来说,它是可变长的,因此它无法记录自己的长度。但是如何来表示字符串的结束呢,它本身又是没有长度的信息,因此必须用一个字符来标记字符串的结束,这就是'\0'的来历。由于字符串的连续性,编译器没有必要通过它的长度信息来提取整个字符串,仅通过一个指向其开头字符的字符指针就能实现对整个字符串的引用。

如果用一个字符串字面常量来初始化一个字符数组,数组的长度至少要比字符串字面常量的长度大1,因为还要保存结束符'\0'。

对于字符数组来说,它并不在乎中间或末尾有没有'\0'结束字符,因为数组知道自己有多少个元素,况且'\0'字符对它来说是一个合法的元素。

二、字符指针的误区

当你使用字符指针来引用一个字符变量的时候,千万要小心,因为默认C++/C默认char *表示字符串。例如:

char ch = 'a'    //用字符‘a’来初始化字符变量ch
char *pchar = &ch   //字符指针指向字符变量
cout<<pchar<<endl;  //错把字符指针当做字符串
正确用法:cout<<*pchar<<endl;


 

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值