字符串指针和数组

最近在学数组的时候,碰到了字符串指针,很是疑惑,为了加深记忆,记下来吧。

#include <iostream>
usingnamespacestd;

int main() {
char*pc="SNAIL";
cout<<pc<<endl;
cout<<*pc<<endl;
cout<<(unsigned*)pc<<endl;

pc = pc+3;
cout<<pc<<endl;
cout<<*pc<<endl;
cout<<(unsigned*)pc<<endl;
}

pc输出的是整个字符串,*pc输出的是字符串的首字母,而(unsigned *)pc输出的是字符串的首字母的地址。

在c中,字符串常量是按照字符数组处理的,其实际上是在内存中开辟了一个字符数组来存放字符串数组,在上述程序中定义了一个字符指针pc,并把字符串的首地址赋值给了它,可以看到:pc被定义为一个指针变量,它指向字符型数据,请注意只能指向一个字符变量或其它字符类型数据,不能同时指向多个字符数据,更不是把"SNAIL"这些字符存放到pc中。只是把"SNAIL"的首地址赋给指针变量pc(不是把字符串赋给*pc)。

在c++中,字符指针对于<<来说,全作为字符串的首地址来处理,系统先输出它所指向的一个字符数据,然后自动使pc加1,使之指向下一个字符,然后再输出一个字符,……,如此直到遇到字符串结束标志‘\0’为止。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值