C++基础:7.指针算术及指针与字符串

①指针算术:

和动态数组的使用类似,给指针变量+1,指针指向数组的下一个元素,这时指针指向的地址会增加指针指向类型的字节数。

举个例子:指针py指向double类型(设系统使用8字节存储double),原本存储的地址是0x28ccf0;在py+1之后,存储的地址变为0x23ccf8,指向数组中第二个元素。

也就是说,通常情况下,C++将数组名解释为第一个元素的地址,即数组arr第一个元素的地址,既可以用arr也可以用&arr[0]表示。

相应的,指向它的指针加一后,它存储的地址变为&arr[1]。

指向的地址上的值表示方法类似:*arr[1]即为*(arr+1)。

②指针与字符串:

cout觉得,除了char,其他所有的数据类型只代表一个字符的地址。所以,如果要打印char类型的数组元素,像这样:

char fruits [10] = 'apples';

cout<< fruiits;

它会打印出apples,而不是a。也就是说,当cout遇到char数组名,会一直打印到遇到空字符。

先说两个函数:strlen()和strcpy();前者获取字符串长度,后者复制

strlen(),括号中写要获取的字符串的长度,可以加减;

strcpy可以填三个参数,中间要用逗号连接,第一个是目标地址,第二个是要复制的字符串的地址,第三个是要复制的最大字符数。

但是strcpy有个问题:它把字符串复制到数组里,如果字符串比数组长度短,它就把字符串全部复制了再加个空字符;但是如果字符串比数组长,它不加空字符,复制到哪里算哪里。

所以我们在使用时就会用到第三个参数。

例:

char pet[15];
strcpy(pet,'I have a lovely dog and his name is zyw',14)//只要14个字符,给空字符留空间
pet[14] = '\0';//手动添加空字符

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值