浅谈char *str与char str[]的区别

        前段时间,在做一个工程,里面写到一个传值函数,把char str[]传给参数char *str,然后利用strncmp比较某两个字符串大小进行相关操作,结果strncmp我是用sizeof来指定比较的字符串的字节数的,结果strncmp竟然一直没法正确判断,顿时我很吃惊,不知道哪里有问题,后来将sizeof(str)的值打出来看了一下,竟然不是字符串的字符个数,而是比起小很多地一个值。

        于是将char *str和char str[]都赋成了“123456789”,结果,后面一个是正常的10个字节,前一个却只为4,后来仔细想了想,char *str的字节确实不应该为10,因为它是指向“123456789“这个字符串的指针,并不是这个字符串的本身,所以虽然它能表示该值,字节数却不是该值的字节数,于是果断把strncmp比较里的sizeof(str)改成strlen(str),因为在32为平台上,char是占一个字节的,所以strlen()的值就是该字符串的字节数。

        另外要注意指针需有内存地址空间了才能被使用,光声明一下如char *str是不能被使用的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值