39-C++-指针与字符串

本文详细介绍了C++中指针与字符串的关系,包括数组名、字符指针和字符串字面值被视为字符串首字符地址的概念。通过示例程序4.20解释了如何使用strlen()和strcpy()函数,强调了正确处理字符串输入和内存分配的重要性,以避免潜在的问题,如未初始化的指针和数组越界。同时,推荐使用C++的std::string类型以简化字符串操作。
摘要由CSDN通过智能技术生成

4.8.3 指针和字符串

数组和指针的特殊关系可以扩展到C-风格字符串。请看下面的代码:

char flower[10] = rose;

cout<< flower << s are red\n;

数组名是第一个元素的地址,因此cout语句中的flower是包含字符rchar元素的地址。cout对象认为char的地址是字符串的地址,因此它打印该地址处的字符,然后继续打印后面的字符,直到遇到空字符(\0)为止。总之,如果给cout提供一个字符的地址,则它将从该字符开始法院,知道遇到空字符为止。
里的关键不在于flower是数组名,而在于flower是cher的地址。这意味着可以将指向cher指针变量作为cout的参数因为它也是char的地址。当然,该指针指向字符串的开头,稍后将核实这一点。
面的cout语句中最后部分的情况如何呢?如果flower是字符个字符的地址,则表达式"s are red\n”是什么呢?为了与cout对字符串输出的处理保持一致,这个用引号括起的字符也应当是一个地址。在C++中,用引号括起的字符串像数组名样,也是第一个元素的地址。上述代码不会将整个字符串发送给cout,而只是发送该字符串的地址。这意味着对于数组中的字符串、用引号括起的字符常量以及指针所描述的字符串

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值