sizeof与strlen的区别与联系

      今天看到了一道很有意思的题,就想给大家分享分享,顺便说一下sizeof与strlen的区别。请接着往下看:

int fun(char* s){
    char* t = s;
    while(*t++);
    return t-s;
}

fun函数的功能是_______
A.比较两个字符串的大小
B.计算s所指字符串占用内存的大小
C.计算s所指字符串的长度
D.将s所指字符串复制到字符串t中

        这道题的答案书选C,为什么选C呢,首先函数是int类型的,所以返回的是一个整型的数据。因为*t++中*号与后加加(++)的符号优先级是一样的,所以我们其实可以拆分为*(t++)或者*t和t++,这样是不是就很清晰了,*t和t++两个表达式要不就都运行,要不就都不运行。当执行到最后一个 \0 时,while中的t还做了一次++操作,而此时s依然指向字符串开头(因为s一开始就没改变过,只有t在进行++操作),所以t指向字符串\0的后一个位置,两者相减等于strlen(s)+1,也就是sizeof(s);所以最后的结果是字符串的长度。

源代码如下:

#include "stdafx.h"
#include<string>

int fun(char* s) {
	char* t = s;
	while (*t&#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值