字符串和字符数组,其与指针关系

前言

个人浅显理解,观lellansin视频有感。

字符串和字符数组

1,字符数组名就是数组的首地址
在这里插入图片描述
这里和普通变量不同,普通变量只能通过取地址符得到地址,数组可以通过数组名和取地址符。
在这里插入图片描述

补充,字符数组名地址+1得到下一数据的地址,字符数组名取地址+1得到是数据的末地址,也就是下一个元数据的首地址。在这里插入图片描述

2,字符串==字符数组

"hello world"<==>char c[]={
    
    "hello world"};

就算你现在还不理解,那看看几个程序,对比来看

字符数组
在这里插入图片描述
字符数组的地址是第数据中的首地址,对应下标可以取到对应值

字符串
在这里插入图片描述

字符串本身就是一个地址,数据中的首地址,字符串它的本身就相当于字符数组名,数组可以的操作,字符串也都可以。

字符串和字符数组与指针关系

字符数组常规遍历
在这里插入图片描述
字符串遍历
不知道字符串本身就是其数据首地址前
在这里插入图片描述
知道后便可以将&(“hello wlord”[0])换成"hello wlord"

字符数组遍历
再不知道字符数组名就是首地址前
在这里插入图片描述
同理,可将可以把&c[0]换成c

在这里插入图片描述
这里就可得到一个结论

*c==c[0]
*(c+1)==c[1]
*(c+2)==c[2]
*(c+n)==c[n]

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
视频是这样写的,我觉得我写这样容易理解点。
在这里插入图片描述

关于printfa()函数
在这里插入图片描述

在这里插入图片描述
第一个数据,其定义的为一个字符常量指针,
在这里插入图片描述
还有就是关于这个函数
在这里插入图片描述
这个是值得我学习的,我们可以自己去探索一些东西,就比如在不知道数组名是数组数据中的首地址时,你可以试着打印其第一个数据的地址来进行对比,这样会有益我们的学习。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_45830608/article/details/112915686