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

    文章

    2998

    浏览量

    73875
  • C语言
    +关注

    关注

    180

    文章

    7597

    浏览量

    136147
  • 字符串
    +关注

    关注

    1

    文章

    577

    浏览量

    20485
  • 数组
    +关注

    关注

    1

    文章

    414

    浏览量

    25906

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

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

收藏 人收藏

    评论

    相关推荐

    数组、向量和字符串 实验

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

    C语言入门教程-字符串

    字符串 数组按常规顺序保存字符:str[0]保存字符串的第一个字符,str[1]保存第二个,等等。但为什么一个大小为100的
    发表于 07-29 14:17 1611次阅读
    C语言入门教程-<b class='flag-5'>字符串</b>

    C语言字符串转数字实现方法

    在C/C++语言中没有专门的字符串变量,通常用字符数组来存放字符串字符串是以“\0”作为结束符
    发表于 11-14 17:50 1.3w次阅读

    C语言的字符串处理函数

    指针是神奇的,指向整型的指针int *p1,可以操作整型数组int a[];指向字符型的指针char *p2,可以操作字符数组字符串)ch
    发表于 07-24 17:37 4次下载
    C语言的<b class='flag-5'>字符串</b>处理函数

    电子表格字符串数组转换和改良LabVIEW资料免费下载

    由于labiview自带的电子表格字符串数组转换子VI存在输出的数组会被字符串的单个回车影响,这会导致单元格中带有回车的数组转到
    发表于 07-03 08:00 10次下载
    电子表格<b class='flag-5'>字符串</b>至<b class='flag-5'>数组</b>转换和改良LabVIEW资料免费下载

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

    字符串是存放在字符数组中的,对字符数组中的字符逐个处理时,前面介绍的指针与
    发表于 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>说明

    什么是复制字符串?Python如何复制字符串

    。 在上一篇文章《你真的知道Python的字符串怎么用吗?》里,我突发奇想,将字符串跟列表做了比较,然后发现字符串竟然没有复制的方法。当时没有
    发表于 11-25 10:32 2990次阅读

    字符串函数重写练习

    字符串函数重写练习:字符串比较、字符串拼接、字符串查找、字符串拷贝、内存比较、内存拷贝、内存初始化、内存比较、二维
    的头像 发表于 05-05 15:02 1964次阅读

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

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

    简述数组字符串组的使用

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

    C语言字符串的引用方式

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

    c语言字符串定义

    C语言是一种强大而广泛使用的编程语言,字符串是其中一个非常重要的概念。在C语言中,字符串是由一系列字符组成的数组,它可以表示文本、数字等各种类型的数据。在本文中,我们将详尽、详实、细致
    的头像 发表于 11-24 10:02 1802次阅读

    C语言字符串编译函数介绍

    在C语言中,字符串实际上是使用null字符O'终止的一维字符数组。因此,一个以null结尾的字符串,包含了组成
    的头像 发表于 03-07 16:18 476次阅读
    C语言<b class='flag-5'>字符串</b>编译函数介绍

    labview字符串如何转换为16进制字符串

    Instrument)以及利用第三方工具。 1. 使用内置函数 LabVIEW提供了一些内置函数,可以直接将字符串转换为16进制字符串。这些函数通常位于“编程”->“字符串”->“转换”菜单下。 1.1
    的头像 发表于 09-04 15:54 1819次阅读

    labview字符串数组转化为数值数组

    在LabVIEW中,将字符串数组转换为数值数组是一项常见的任务,尤其是在处理数据采集、信号处理或用户输入时。 1. 理解LabVIEW的数据类型 在开始之前,了解LabVIEW中的数据类型是非
    的头像 发表于 09-04 17:47 1758次阅读