0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

字符数组和字符串有没有区别?

学益得智能硬件 来源:学益得智能硬件 2023-11-30 16:39 次阅读

字符数组和字符串有没有区别?

最近有同学做笔试题的时候,遇到了这么一个问答题。

绝大多数人会把字符数组和字符串当作一个概念,因为在C语言中没有string这种类型,所以我们一般用字符数组来表示字符串。

要说他们的区别,我觉得主要就是 � 的问题。

定义字符数组,我们一般这样写:

chararray[]={'h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd'};;

但是这种写法存在很严重的问题,如果用 strlen 计算数组的长度或者用 printf 的 %s 格式来输出,那程序很容易奔溃。

因为数组里面只有 helloworld, 占10个字节,它达不到字符串的标准。

C语言中的字符串必须以 � 结尾,不管是 printf 还是 strlen 这些字符串处理函数,都是把 � 作为字符串的结束标志。

想要计算这个数组的长度,只能用 sizeof 关键字,得到数组实际占用内存的大小。

这个代码要想修改,有两种方法。

第一种把数组的容量改的大一些,程序就能正常运行。

char array[20] = {'h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd'};;

这种写法,helloworld 的后面全是 �。

此时的字符数组就是一个完整的字符串。

第二种在最后一个字符的后面手动加上一个 �,也能达到相同的效果。

chararray[]={'h','e','l','l','o','w','o','r','l','d','�'};

当然这种写法太麻烦,我们一般直接写成这样。

char array[] = "helloworld";

这个地方的 helloworld 就是一个标准的字符串,存储的时候编译器会把最后的 � 一同加入到数组中。

这种写法推荐大家在写代码的时候使用。

有时候我们还会听到一个概念,字符串数组,比如写成这样的:

chararray[]={"helloworld","123456"};

这个就比刚才的代码麻烦的多。

问大家一个问题,此时的数组array在内存中占几个字节?

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 内存
    +关注

    关注

    8

    文章

    2767

    浏览量

    72765
  • C语言
    +关注

    关注

    180

    文章

    7530

    浏览量

    128656
  • 字符串
    +关注

    关注

    1

    文章

    551

    浏览量

    20123
  • 数组
    +关注

    关注

    1

    文章

    409

    浏览量

    25595

原文标题:字符数组和字符串是不是一回事

文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    一维字符数组转化为字符串时问题

    一维字符数组转化为字符串时怎么可以让一个元素占字符串里的一行,而不是都放在一块
    发表于 12-04 17:48

    如何将一维字符串数组里的字符串转成下拉列表?

    如题,本人做了一个一维字符串数组来存储IP字符串,现在想建一个下拉列表,用这个列表显示多个IP地址,能向列表里添加数组里的IP字符串,求助大
    发表于 05-27 20:58

    LABVIEW中使用tdms存取字符串数组的问题

    TDMS写入字符串数组时,只带组名,读取相应写好的文件的时候会报错,代码2525,无法读取指定类型,就是想问下,如何用TDMS写入字符串数组类型的数据,并且能正常从文件中读取回来。另外
    发表于 08-15 17:26

    labview如何将字符串数组元素的英文转化为字符串数组中文显示,字符串数组各元素值是变化的

    各位大神,labview如何将字符串数组元素的英文转化为字符串数组中文显示,字符串数组各元素值是
    发表于 01-15 15:09

    LABVIEW 字符串变成字符数组

    怎么把一个字符串变成一个字符数组 ? 比如String "abc" 变成string[]{"a","b","c"}这种
    发表于 04-21 18:02

    如何将字符串按输入顺序连接到字符串数组中?

    格式是“字符串数组”尝试了好多方法都不行,请各位大神帮帮忙!如下图所示attach://937665.pngattach://937664.png
    发表于 07-27 19:17

    什么是指向字符串指针?

    字符就是字符串结束的一个标志性字符没有实际意义,而当我们给一个长度为5的数组中存入“Hello”字符
    发表于 03-15 14:19

    字符串字符串数组实现对汉字的分割

    输入字符串,输出字符串数组,实现对汉字的分割.
    发表于 12-23 14:09

    字符串字符数组的转换字符数组介绍

    字符串字符数组的转换字符数组 -----》字符串1:直接在构造String时转换。char[]
    发表于 01-12 07:01

    数组、向量和字符串 实验

    实验 5 数组、向量和字符串一、实验目的 1. 掌握Java中的数组定义、引用2. 掌握向量的基本概念和应用技术3. 掌握使用字符串String类
    发表于 09-23 19:00 1466次阅读

    c语言之字符数组详解

    ("%c ",a[i][j]);}printf("\n");}} 在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串。当把一
    发表于 11-16 10:22 1951次阅读

    用指针实现字符串拷贝的程序和字符型指针变量与字符数组区别说明

    字符串是存放在字符数组中的,对字符数组中的字符逐个处理时,前面介绍的指针与
    发表于 11-05 16:15 2次下载
    用指针实现<b class='flag-5'>字符串</b>拷贝的程序和<b class='flag-5'>字符</b>型指针变量与<b class='flag-5'>字符</b><b class='flag-5'>数组</b>的<b class='flag-5'>区别</b>说明

    C语言字符数组字符串有什么区别

    用来存放字符数组称为字符数组字符数组的各个元素依次存放
    的头像 发表于 02-17 14:27 2618次阅读

    简述数组字符串组的使用

    在Python中我们通常也会用到数组字符串组并且能快速方便的构建出来,那么在java构建数组是否是类似的呢?
    的头像 发表于 02-23 11:09 315次阅读
    简述<b class='flag-5'>数组</b>及<b class='flag-5'>字符串</b>组的使用

    C语言字符串的引用方式

    在C语言程序中,字符串是存放在字符数组中的。 2. 用字符数组存放一个字符串,可以通过
    的头像 发表于 03-10 14:57 1379次阅读