C语言中整形数组、字符数组、字符串的区别

一、

第一 整型数组的存放,数组最后是不加'\0'的,字符串会自动加上,因此存放字符的时候数组的大小要比实际字符的多一个
第二 整型数组 每一个单元是4个字节的,字符串是一个一个字符存放的,每个字符占一个

二,字符数组与字符串的区别

C语言中没有专门的字符串变量,如果要将一个字符串存放在变量中,必须使用字符数组,即用一个字符型数组来存放一个字符串,数组中每一个元素存放一个字符。

<1> 定义: char c[10]

字符型与整型互相通用,因此 int c[10] 也可以定义字符数组。但由于两种类型分配字节不同, 用整型来定义会浪费空间, 另外这样定义实际意义也不大, 只是为了说明其合法性。

<2> 初始化: 

    最简单的方法即逐个赋值: char c[10]={'I', ' ', 'a', 'm', ' ', 'h', 'a', 'p', 'p', 'y'}; 10个字符分别赋绐c[0]到c[9]10个元素。

   如果初值个数小于数组长度,则只将这些字符赋绐数组中前面的元素,其余元素自动定为空字符(即'\0')。
    如char c[12]={'I', ' ', 'a', 'm', ' ', 'h', 'a', 'p', 'p', 'y'}; 则c[10]、c[11]值都为'\0' 。

    C语言中,将字符串作为字符数组来处理。一般我们用字符数组来存放字符串时,都要先确定一个足够大的数组,而实际并用不了那么多,而我们只关心其有效位,为测定字符串实际长度,C规定了一个"字符串结束标志",以字符 '\0' 代表。如果有一个字符串,其中第10个字符为'\0',则此字符串的有效字符为9个。也就是说,在遇到字符'\0'时,表示字符串结束,由它前面的字符组成字符串。
    系统对字符串常量也自动加一个'\0'作为结束符。

    对于语句: pirntf("How do you do? \n"); 实际上该字符串在内存中存放时,系统自动在最后一个字符'\0'的后面加了一个'\0'作为字符串结束标志,在执行printf函数时,每输出一个字符检查一次,看下一个字符是否'\0'。遇'\0'就停止输出。

   可以用字符串常量来初始化字符数组。如:

    char c[]={"I am happy"};

    也可直接写成:

   char c[]="I am happy"; 注意此时数组的长度不是10,而是11,因为系统自动加上了'\0'结束符。

    字符数组不要求最后一个字符为'\0',而为了使处理字符数组和字符串的方法一致,便于测定字符串的实际长度,能及方便在程序中处理, 在字符数组末尾也常加上一个'\0'。

<3> 字符数组的输入输出 

    (1) 逐个字符输入输出。用格式符"%c"输入或输出一个字符。

    (2) 将整个字符串一次输入或输出。用"%S"格式符,意思是输出字符串(String)。例如:

  char c[]={"china"};
  printf("%S", c);

如果一个字符数组中包含一个以上'\0',则遇第一个'\0'时输出就结束。

    (3) 若输入字符串长度超过字符数组所定义的长度时,将造成数组下标越界,但系统对此并不报错。

    (4) 用%S格式输入字符时,遇空格、Tab键和回车将自动结束输入。

用scanf函数输入时, 遇到空格则认为一个字符串结束。试验如下:

#include <stdio.h>
int main()
{
    char str1[5], str2[5], str3[5];
    scanf("%s %s %s", str1, str2, str3);
    printf("%s %s %s\n", str1, str2, str3);
    return 0;
}

运行结果:
================================
how are you↙
how are you
================================

#include <stdio.h>
int main()
{
    char str[13];
    scanf("%s", str);
    printf("%s\n", str);
    return 0;
}

运行结果:
================================
how are you?↙
how
================================

由第二个程序可知,实际并未将这12个字符加上'\0'送到数组str中,而是将空格前的字符"how"送到str中,将其视为字符串处理,在其后加上'\0' 。

转载于:https://www.cnblogs.com/ggzhangxiaochao/p/11238491.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/550048.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java hibernate 表关联_Hibernate多表关联

一、多对一进行关联(多个学生对应同一间宿舍)---学生是主体&#xff0c;宿舍是附体&#xff0c;关联关系在主体学生中设置&#xff0c;在学生类中设置宿舍类&#xff0c;由于宿舍类只有一个可以直接用类来设置,在映射学生类(User)中包含宿舍这个类(Room),在映射配置文件(User.h…

getchar、putchar、puts、gets

getchar(字符) 输入获取一个字符 putchar(字符) 输出控制台一个字符 scanf&#xff08;&#xff09;格式化输入 printf&#xff08;&#xff09; 格式化输出 gets(arr) 输入一个字符串给已经声明的数组arr puts(字符串或者字符数组名&#xff09;输出一个字符串 转载于:https…

关于异性朋友

听到别人在问一个问题&#xff1a;“可是你在大学里又有几个很要好的女性朋友&#xff1f;”   想到自己&#xff0c;却是一个没有。奇怪啊&#xff0c;我虽然木讷&#xff0c;但还不到白痴的地步&#xff0c;怎么会一个没有呢&#xff1f;思讨一下&#xff0c;明白了&#…

java全文检索工具_全文检索工具elasticsearch:第三章: Java程序中的应用

搭建模块创建二个项目gmall-list-service的appliction.properties:server.port8073spring.datasource.urljdbc:mysql://localhost:3306/gmall?characterEncodingUTF-8spring.datasource.usernamerootspring.datasource.passwordrootmybatis.configuration.map-underscore-to-c…

win10 多用户登陆

win10 多用户登陆 一般的直接下载就可以用了。 核心参考链接github 支持 1903 支持最新版本可以需要这个1903支持项参考页面 上述页面的下载文件页面1903支持页面 关于上述链接下载文件readme的解释 RDP Wrapper Library Updater --------------------------- <Add support …

DNN(DotNetNuke)注册用户终于突破10万人了,其3.0也终于跳票了...

是的&#xff0c;尽管我很不愿意&#xff0c;但的确是跳票了&#xff0c;或许跳票是软件开发的惯例了。据说会在圣诞节那天发布&#xff0c;也可能是月底&#xff0c;没有人知道&#xff1a;http://www.asp.net/Forums/ShowPost.aspx?tabindex1&PostID734458 不过&#xf…

java虚拟机MyEclipse_Eclipse和MyEclipse运行环境java虚拟机jvm设置,自己设置jre

Eclipse运行环境java虚拟机jvm设置&#xff0c;自己设置jre浅谈Eclipse寻找JVM(JRE)的顺序机制Eclipse也是一个普通的Java程序&#xff0c;因此必须有一个JRE做为运行环境。如果你的机器上没有安装任何JRE(或者JDK&#xff0c;本文不做二者的区分)&#xff0c;那么点击eclipse.…

初探机器学习之使用百度EasyDL定制化模型

一、Why 定制化模型 一般来说&#xff0c;各大云服务厂商只会提供一些最常见通用的AI服务&#xff0c;针对具体场景的AI应用则需要在云服务厂商提供的服务之上进行定制。例如&#xff0c;通常的图像识别只能做到分析照片的主题内容&#xff0c;而我的需求是给定指定场景的图片&…

Microsoft SQL Server Desktop Engine安装过程中遇到的问题(2)

今天下午没课&#xff0c;又在玩电脑了&#xff0c;想起昨天没解决的问题&#xff0c;心里有点不爽&#xff0c;遇到问题就要解决嘛^_^。 我把昨天装的study实例卸载了&#xff0c;仔细研究了一下自述文件&#xff0c;按照里面的说明&#xff0c;我在C盘根目录新建了一个名为 M…

java面向对象基础代码_JAVA基础知识点之Java面向对象

特点:1:将复杂的事情简单化。2:面向对象将以前的过程中的执行者&#xff0c;变成了指挥者。3:面向对象这种思想是符合现在人们思考习惯的一种思想。过程和对象在我们的程序中是如何体现的呢&#xff1f;过程其实就是函数&#xff1b;对象是将函数等一些内容进行了封装。匿名对象…

OCP-052考试题库汇总(4)-CUUG内部解答版

Which four statements are true about truncating a table? A)Any insert triggers for the table will be executed. B)Any of the table’s indexes are also truncated. C)Any delete triggers for the table will be executed. D)All table storage can be retained. E)O…

mysql innodb4大特征_MYSQL中InnoDB特性浅谈

许久没有更新博客,上周末放假把网易大牛姜sir的著作MYSQL技术内幕InnoDB存储引擎又翻阅了一番,对当前工作的InnoDB特性有了一些新的认识,下面谈谈自己的读后感.1. InnoDB的体系架构由一系列后台线程,内存池和文件组成,这点与其他DB有相似之处. 在内存中划分了一块区域,即缓冲池…

微享:快速分享网页到新浪微博

分享到新浪微博 *:博客园的编辑程序会自动给javascript的链接加上前缀&#xff0c;使得链接错误。版本&#xff1a;&#xff11;.0 简介&#xff1a; 书签栏工具&#xff0c;javascript代码&#xff0c;用于分享网页内容到新浪微博。 安装&#xff1a;Firefox&#xff0c;safa…

VFP下利用API调用帮助

VFP下利用API调用帮助 Declare integer HtmlHelp IN hhctrl.ocx integer hwndCaller, string pszFile, integer uCommand, integer dwData HtmlHelp(0, [mk:MSITStore:WINPY.CHM::/html/winp48fm.htm],1,0)转载于:https://www.cnblogs.com/77543/archive/2005/01/13/91583.htm…

java重命名package_AndroidStudio怎么重命名java目录下的包名(如cn.zsn.app)

【声明&#xff1a;】本文是作者(蘑菇v5)原创&#xff0c;版权归作者 蘑菇v5所有&#xff0c;侵权必究。本文首发在简书。如若转发&#xff0c;请注明作者和来源地址&#xff01;未经授权&#xff0c;严禁私自转载&#xff01;区分包名和applicationid的区别&#xff1a;这里的…

OCP-052考试题库汇总(5)-CUUG内部解答版

Examine these attributes for the profile assigned to USER1 whose password is oracle_4U. • PASSWORD_REUSE_MAX is 5. • PASSWORD_REUSE_TIME is 10. • PASSWORD_GRACE_TIME is 15. Which two conditions must be met for USER1 to reuse oracle_4U? A)At least 5 day…

笔记本鼠标乱跑!不知何故!

开始怀疑是病毒&#xff0c;现在安装了norton还是出现。哪位网友知道是怎么回事情吗&#xff1f;

java in thread main_JAVA报错:Exception in thread main……求帮助?

问题描述:题目要求&#xff1a;(1)创建MaxArray类&#xff1a;声明1个一维数组的成员变量&#xff0c;例如&#xff1a;int array[ ]; //一维数组设置有参构造方法&#xff0c;如&#xff1a;MaxArray(int n){ …… } //有参构造方法&#xff0c;为成员变量创建长为n的一维数组…

[ZZ]MVC设计模式

1 前言   用户界面&#xff0c;特别是图形用户界面&#xff0c;承担着向用户显示问题模型和与用户进行操作和I/O交互的作用。用户希望保持交互操作界面的相对稳定&#xff0c;但更希 望根据需要改变和调整显示的内容和形式。例如&#xff0c;要求支持不同的界面标准或得到不同…

OCP-052考试题库汇总(6)-CUUG内部解答版

Examine these attributes for the profile assigned to USER1 whose password is oracle_4U • PASSWORD_REUSE_MAX is 5 • PASSWORD_REUSE_TIME is 10 • PASSWORD_GRACE_TIME is 15 Which two are true? A)The USER1 password must not have been used for at least 10 da…