v70.字符串

1.字符数组

在这里插入图片描述在这里插入图片描述这个字符数组最后加入了0,变成了可以计算的字符数组,属于字符串了。
在这里插入图片描述

  • 写0 和 写 ‘\0’ 是一样的。因为单引号里面使用了转义字符,他俩都表示的大小都是十进制的0。只不过占用的内存空间不同,一个是4字节,一个是1字节。
  • 但是和‘0’不同,‘0’表示的是一个字符0,他表示的十进制的值是48。
  • 0 是字符串结束的标志,但他不被计到字符串的长度中去;但是在数组中,0作为一个元素,被计入到数组的大小中去。

2.字符串变量

在这里插入图片描述这些变量其实都是字符数组的变量,属于不同的表达形式。

  • 定义了一个指针,指向了一个字符串,里面是“Hello”
  • 定义了一个字符数组;
  • 定义了一个10字节大的字符数组,里面放入了“Hello”,它有5个字符,要占据6个字节的空间,因为编译器会在结尾自动补充"\0";

3.字符串常量

在这里插入图片描述

  • 字符数组的长度一定是看到的字符的 长度+1,别忘了最后的“\0”。一定要有0才是c语言的字符串
  • 相邻的两个字符串会被连接起来,成为一个大的字符串
    在这里插入图片描述字符串字面量就是双引号 “”

4.字符串的常/变量

在这里插入图片描述

char *s = "hello";
s[0] = b;
1.这种操作是不允许的,尽管可以进行编译
  1. s和s2的地址是相同的,表示他们指向同一个 hello;
  2. 定义了一个本地变量 i;可以看到本地变量的地址很大,和 s 距离很远
  3. 其实,s(s2)指向的字符串储存于代码段,而且是只读的,所以不可以执行s[0]=…
  4. "hello"实际上是一个字符串常量
    在这里插入图片描述
区别就在于:
char *s = "hello";
指针s要指向某个地方的字符串hello,(只读)

char s[] = "hello";
数组s,字符串hello就储存在这,并且可进行字符串的计算

在这里插入图片描述
根据输出的地址,定义的变量 i 和之后的数组s3[]是储存到一块的,都是本地变量

在这里插入图片描述
如果作为指针,不知道字符串在哪,可以用来:

  1. 只表达一个字符串,不去改写
  2. 如果数组作为了函数的参数,那么他就是一个指针了,不妨使用指针的形式表达函数的参数
    在这里插入图片描述

在这里插入图片描述最后注意,字符串末尾一定有0;数组和指针、数组和字符串的关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值