c语言字 字符串转换成数组_c语言入门 第十六章 指针和字符串(指针数组)

1 指针与字符串

字符串可以看作是一种特殊的数组,所以使用指针处理字符串的时候可以完全按照处理数组的方式来进行

#include

%s占位符的特点就是只要告诉他字符串的首地址,就可以读取整个字符串

ff0593510119376097db85eb5d7f5f6e.png

但是字符串本身又有着自己的特点:那就是有一个固定的结束符,我们在直接使用字符串常量的时候,可以不用指定字符数组的长度,只要知道了字符串的首地址,就可以知道整个的字符串,所以,我们可以利用一个字符指针(首地址)来代表整个字符串

#include

4d42bed82d9dd34e15692b2da162ab92.png

使用字符数组和字符指针都可以直接代表字符串,后者出现的情况可能还会更多

但是两者并不是完全相同,字符数组表示的字符串可以被修改内容,字符指针表示的数组不能被修改内容

#include

df31e03567f6c2d1ebf71daf67c3a0fd.png

字符串的内容可以被修改

#include

无论是使用 s[]还是*s修改字符串的内容程序都会报错(请自行验证)

主要原因是:字符数组是把字符常量的值,复制到字符数组开辟的空间,而字符指针直接指向了字符串常量的保存地址

在c语言当中,数组的地址和字符串常量的地址不在同一个区域内,字符数组的区域叫做栈区,字符串常量保存的区域叫做常量区,栈区内的数据可以修改,常量区内的数据不能修改,这部分内容之后会有一个专题来讲

2 指针数组

上一章我们已经见过指针数组的声明 int *p[],但是并没有仔细的介绍

指针数组顾名思义,就是把多个指针保存到一个数组当中

cb8ff052e5f882cd2fb88da8d0616dd5.png

也就是说建立了一个数组保存了多个变量的地址

#include

78d7b874c7c78f510f385344805876c8.png

这样做意义不大,更重要的一个用途是我们可以使用指针数组来定义一个长度不相同的数组组成的二维数组

8e983f58bcae19185e4e5e99045e3023.png

把三个不同长度的数组放到一个指针数组当中,那么就形成了一个逻辑上的二维数组,并且每个数组的长度不用相同

#include

arr[1]找到的是第二个数组的地址 arr[1][2]即是第二个数组的第三个元素

0d0970c488c50b42ee5863237063b285.png

3 字符串组成的数组

上面讲的这种形式对于字符串数组来说特别的有用,我们可能考虑到把一系列的字符串保存到一个数组当中

4e2e22063d791781796701869cb90662.png

只要把字符串的首地址存入指针数组就可以了

#include

输出也特别简单,像正常数据数据就可以了

5f46da311608460d76c4a811b750e06b.png
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值