c语言中字符串的两种定义方式详解图,c语言中字符串的两种定义方式详解视频,C语言中字符串的两种定义方式详解

c语言中字符串的两种定义方式详解图,c语言中字符串的两种定义方式详解视频,C语言中字符串的两种定义方式详解

本文主要详细介绍了C语言中字符串的两种定义。边肖认为这篇文章不错,有一定的参考价值。感兴趣的朋友可以参考一下。

目录

模式1模式2总结我们知道C语言中没有字符串这种数据类型。我们只能靠数组来存储,也就是字符数组。我们有两种方法来定义和初始化数组。下面将介绍这两种方式以及它们之间的区别:

方式1

前两个是正确的定义。第一个之所以没有指定字符数组的长度,是因为编译器可以自己推断它的长度,不需要程序员自己设置。这也是一个相对推荐的定义,但是注意内存长度编译器一旦确定就不能再更改了。接下来我们来分析一下为什么第三个编译器乱码。

众所周知,字符' \0 '是一个字符串的结束标记,这个标记本身就占用了一个内存。我们输出的时候看不到这个字符,这是编译器决定的。因为编译器的符号本身占用一个字节,所以在计算数组时,关键字sizeof()比字符多占用一个内存,比如图中的arr1和arr2。然而,在计算arr3时,

今天,我想给你们树立一个概念。当我们定义一个变量时,先前的类型加上变量名实际上在内存中创建了一个空间。变量占用的内存大小不是由变量的值决定的,而是由我们最初创建的空间大小决定的。这是一个很容易被忽略的小概念。我希望你能记住这个概念。

int a=0;//在内存中打开一个4字节的空间,然后把0的二进制补码形式(0的补码就是本身)放入这个内存空间。

char b=' c//在内存中打开一个一个字节的空间,然后把字符‘c’对应的ascii码值对应的二进制补码形式放入这个内存空间。

//至于数组形式,其实和这个差不多,就是先打开数组占用的内存,然后把要存储的数据的二进制补码形式放入内存空间。

相信你对以上原因有所了解。接下来我们来说说arr3数组为什么会输出乱码。“0”是字符串的结束标记,但是这个结束标记有什么用呢?有两种用途。首先是strlen函数在计算字符串占用的内存空间时遇到' \0 '会停止,然后就可以得到字符串的长度(当然这个计算不会计入' \0 '的结束标记);第二点是当编译器执行printf函数,以字符串的形式输出字符数组时,遇到' \0 '编译器会停止输出。在arr3中,我们创建的内存空间都是字符,没有字符串结束标志' \0 '。因此,编译器不会停止输出内存空间中的字符,直到出现' \0 '为止。

Zeof()计算变量所占用的内存空间,也就是红框中的内存大小,也就是我们定义的大小,而strlen()从变量memory的起始位置开始计算,向后工作,直到到达结束符' \0 ',也就是上图中的红框。让我给你看下面的代码。

这点相信你已经知道了,也有助于我们更好的理解第二个定义中遇到的问题。

方式2

上述三种定义方法中,1和3是正确的。方法2中,结尾标记' \0 '没有放在数组的最后一个空格,这也是我们经常犯的错误。希望大家记住,用这种方法定义字符串的时候,不要忘记加上字符串的结束标记' \0 ',因为编译器不会自动为程序员加上' \0 ',所以我们不推荐这种方法。0 ',另一种方法是限制字符串的长度。限制后,编译器会在末尾加上结束标志' \0 '(这里仅指vs2019编译器,其他编译器未经作者验证)。当然,最推荐程序员手动添加' \0 '作为结束标志。

总结

本文到此为止。希望能帮到你,也希望你能多关注我们的更多内容!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: