指针和c-风格字符串

指针和c-风格字符串

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

char flower[10] = "rose";
cout << flower << "s are red\n";

数组名是第一个元素的地址,因此cout语句中的flower是字符‘r’的地址。cout对象认为char的地址是字符串的地址,因此他打印带地址处的的字符,然后继续打印后面的字符,直到遇到‘\0’为止。总之,如果提供一个字符的地址给cout,它将从该字符开始打印,直到"\0"为止。

关键不在于flower是数组名,而在于他是一个char的地址。这意味这可以将指向char的指针变量作为cout的参数,因为他也是char的地址。

那么后边的"s are red\n"情况是怎样的呢?在c++中引号括起来的字符串像数组名一样,也是第一个元素的地址。上述代码不会将整个字符串发送给cout,而是只发送该字符串的地址。这意味这数组中的字符串、常量的字符串和指针描述的字符串,处理方式是一致的,都将传递他们的地址。于逐个传送字符相比,这样工作量更少。

如果想要打印Char字符串的地址,可以尝试下面的代码

cout<<(int *)flower;

NOTE:早cout和多数c++表达式中,char数组名、char指针以及引号括起来的字符常量都被解释为首字符的地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值