*关于C语言字符串数组*

此处我为大家解决一个十分容易混淆的点。此处问题在22备考过程中问的比较多。最可气的是21、22考研场上都考到了。此处为23及以后考生做出详细解释。

首先我们来看2000年的真题,

2、#include<iostream>

using namespace std;

int main()

{

static char t[5]={"abcd", "efgh", "ijkl", "monp", "qrst", "uvwx"};

cout<<t1[3]<<" "

<<*(t1+3)<<" "

<<(((t+1)+2)+3)

<<" "<<((t[1]+2)+3)

<<endl;

cout<<**t<<" "

<<((t+1)+1)<<" "

<<t0<<" "

<<**t+1<<endl;

return 0;

}

这里我们该如何理解呢?

第一步:我们首先应该了解C语言编译器的一个特性,C语言中字符串都会有一个结束标志,即 ‘\0’ ,这个字符在ACSII码表中为第一个,其值为0。空字符,这是字符串中作为结束的判断标记。

此处为举例子:

只考虑字母只有8个,但是由于空字符的存在,所以这里必须是9个长度。

在了解C语言字符串长度的基础上,我们继续解读。

此处我们可以了解到尽管最后加了一个空字符,但是调用函数strlen()函数的时候是不计算在内的。但是最后一个‘\0’是真实存在的。

第二部:当输出函数列入 puts(); printf();cout;等C语言输出函数在输出数据的时候,遇到 ‘\0’ 就会结束输出。笔者关于这里的认识是:当输出的东西是一个指针时,它会输出到该字符串的“\0”;当输出的东西是具体某个元素时(具体指针指向的元素如:ss[1])它会直接输出该字符。

接下来我们看一段代码。

此处可以理解为[]为指向具体元素,而ss+n表示ss指针向后移动n位。

至此字符串数组基本理论叙述完成。

在此基础上我们再看2000年的真题。他扩充到了三维(22年是一个二维问题)。

其中1、关于三维指针t你可以这么理解*t行数[每个字符串长度],*

2、t[],三个括号可以理解为具体的指向某个元素。

3、t+n,为一维指针。而此处的*(t+n)为指针指向的具体元素。

4、t为二维指针指向第一行,(t+1)指向第二行,*(t+1)+1指向第二行第二个字符串。

5、t[1]也相当于指向第二行,和*(t+1)为同一个意思。

6、(t[1]+2)+3不难理解是第二行 第三个字符串 的第四个位置的指针,故(*(t[1]+2)+3)为该位置的元素也就是x。

我为大家展示下思考:

再来看一下21年真题。

22年真题。

这部分用到了代码展示所以排版略显凌乱,话糙理不糙,只要能为大家拿到这5分我想是值得的。** **

关于C语言字符串数组相关推荐

  1. c语言字符串字典序,字符串排序数组C语言 C语言 字符串数组字典排序

    C语言 字符串数组字典排序 #include #include int main() { int j,k,i,t,n; char s[10][10],b[10][10]; for(i=0;i c语言, ...

  2. c语言字符串数组数组名与指针

    一.概念理解 1.C语言中没有字符串类型,用一片内存空间保存一串字符,这片空间称作字符数组. 2.以'\0'结尾的字符数组被称为字符串数组.'\0'是字符串结束的标志. 3.用双引号括起来的都是字符串 ...

  3. c语言 字符串数组 初始化,C 字符串数组初始化问题

    1.定义的时候直接用字符串赋值 char a[10]="hello"; 注意:不能先定义再给它赋值,如char a[10]; a[10]="hello";这样是 ...

  4. c语言字符串数组函数参数,C语言/C++ 数组作为函数参数

    前几天帮别人解决数组拼接问题(类似字符串拼接)时想到这个专题.因为她的代码太糟糕. 我们知道C.C++中的数组是没有拷贝(复制)运算的,除非编译器支持.因为C语言发明的初衷是替换汇编语言,要知道你用不 ...

  5. c语言字符串数组分配没错,【字符串数组面试题】面试问题:C语言基础小结… - 看准网...

    26. 位段:指定结构体中成员变量所占的位数(以位的形式紧凑存储) unsigned char/int aaa:1 这里只能是unsigned char/int类型 27. 指针数组:int *p[1 ...

  6. C语言字符串数组遍历处理

    int main() {char *str_char[] = {"POrigin", "PModelNum", "PName", " ...

  7. c语言字符串数组的两种表示方法

    字符串数组 1. 定义 字符串数组:一个数组中的所有的元素都是字符串. 如果想存储一堆字符串那么可以使用字符串数组,说白了字符串数组就是二维数组 字符串数组两种表示: 第一种:char strr[4] ...

  8. c语言 字符串数组 将字符串中的小写字母转换为大写

    一种逃避了指针使用的做法- 任务描述 从键盘读入一个字符串,把字符串中的小写字母转换为大写字母,输出转换后的字符串和转换的字母个数. 测试说明 平台会对你编写的代码进行测试: 测试输入: abcABC ...

  9. C语言 字符串数组 的输入 总结

    小白见解,有问题请批评指正 1.字符串数组的定义 char *str[] = { }; 每个元素都是指针,指向存储空间中的某个字符串 取其中的值的时候直接用str[i]来取 //上面的内容使用注释的话 ...

最新文章

  1. 手工构建ISO的基本步骤
  2. centos7 修改yum源为阿里源
  3. jeewx-api-1.0.1(捷微微信接口API)版本正式发布
  4. 泰勒公式推导过程_#泰勒#(Taylor)公式真的很难很难吗?
  5. 也谈被严重高估的安全技术
  6. web项目在iis配置好后不能正确访问问题集锦,以及IIS常规设置
  7. 学习——AQS工作原理分析
  8. 高斯滤波/高斯平滑/高斯模糊的实现及其快速算法(Gaussian Filter, Gaussian Smooth, Gaussian Blur, Fast implementation)
  9. 图的邻接矩阵表示及其基本操作
  10. 基于QT和DCMTK的Dicom 图像浏览器---目录
  11. 【英语四六级-必背单词】高中英语单词 (H)-MP3试听与下载
  12. Parameterize Method (令函数携带参数)
  13. Qt示例解析 【Callout】
  14. style = “color:####“包含的颜色名称对照表
  15. 微信小程序开发-微信支付之免密支付(自动扣费)一 小程序+java接口
  16. Android高斯模糊、高斯平滑(Gaussian Blur)【2】
  17. HTML5 Web Audio Api-2 发声oscillator
  18. 获取网页中所有的小客车摇号信息
  19. db mysql / mysql dba / mysql manual / mysql config / mysql innotop
  20. zerotier使用教程_ZeroTier 中阶教程

热门文章

  1. 机器人迷城手机版_机械迷城安卓版|机械迷城下载v2.0.21-乐游网安卓下载
  2. 各大浏览器介绍及内核说明
  3. 【自然语言处理】基于NLP的电影评论情感分析模型比较
  4. 日常使用计算机过程中发现的中断,2010年会计从业考试《初级电算化》章节习题及答案(5)...
  5. 快来珍藏这款10MB尺寸的Photoshop7.0绿色版(亲测Win10可运行,附下载链接)
  6. 机器学习——时间序列(二)
  7. [绍棠] nuxt.js获取当前路由的名称和路径
  8. COMSOL中合并域
  9. Python ln_Python数据可视化:网易云音乐歌单
  10. Palo Alto FW Policy 配置