char *s = “hello” 和 char s[] = “hello” 的区别

  • char *str = “hello”表示在动态变量区开辟一个存放指针的存储单元,指针变量名为str,这个str指向常量区的”hello”,因此不能更改这个字符串的值,比如 str[0]='e'这样不行。
  • char str[] = "hello"表示在动态变量区开辟一个能连续存放6字节的字符串数组,str是数组名称,其数组内容可以被修改,定义在函数中因为是局部变量不能return。

字符串数组定义

  • char s1[5] = {"abcd"}等同于 char s1[5] = "abcd"
    sizeof(s1) = 5strlen(s1) = 4
  • char s2[5] = {'a','b','c','d'}
    sizeof(s2) = 5strlen(s2) = 不确定数
  • char s3[] = {"abcd"}等同于 char s3[] = "abcd"
    sizeof(s3) = 5strlen(s3) = 4
  • char s4[] = {'a','b','c','d'}
    sizeof(s4) = 4strlen(s4) = 不确定数
    总结:定义成“ ”双引号格式的话,会自动加’\0’结束符,strlen计算字符串长度时遇到’\0’结束(其计算的长度不包括’\0’),sizeof是运算符,计算的是分配的内存大小。定义字符串的话尽量用char s[5] = “abcd”(要给’\0’留一个字节的位置)或者char s[] = “abcd”(最推荐)。

sizeof与strlen的区别详细参考: https://blog.csdn.net/magic_world_wow/article/details/80500473

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值