C语言中字符数组,c语言字符型数组和字符串

C语言中字符数组,c语言字符型数组和字符串,c语言字符数组与字符串的使用详解

本文是对C语言中字符数组和字符串使用的详细分析和介绍,供大家参考。

理解1、字符数组的定义与初始化字符数组的初始化最简单的方法就是对数组中的每个元素逐一赋值。char str[10]={ 'I ',' ',' a ',' m ',' ',' h ',' a ',' p ',' p ',' y ' };即,10个字符被分别分配给str[0]至STR [9]的10个元素。如果大括号中提供的字符数大于数组长度,将被视为语法错误;如果小于数组长度,则只设置这些字符数组中的第一个元素,其余元素将自动设置为空字符(即' \0 ')。

2、字符数组与字符串在C语言中,字符串被视为字符数组。(C中没有)在实际应用中,人们关心的是有效字符串的长度而不是字符数组的长度。例如,定义了一个字符数组的长度为100,但实际有效字符只有40个。为了确定一个字符串的实际长度,C语言指定了一个“字符串结束标志”,用字符' \0 '来表示。如果存在第10个字符为' \0 '的字符串,则该字符串的有效字符为9。也就是说,当遇到第一个字符' \0 '时,它表示字符串的结尾,它之前的字符构成字符串。系统字符串常量中会自动添加一个“\0”作为终止符。比如‘C程序’有9个字符,但占用内存10个字节,最后一个字节' \0 '是系统自动添加的。(可通过sizeof()函数验证)有了end标志' \0 ',字符数组的长度就没那么重要了。在程序中,往往是通过检测' \0 '的位置来确定字符串是否结束,而不是根据数组的长度来确定字符串长度。当然,在定义字符数组时,我们要估计实际的字符串长度,以保证数组长度总是大于实际的字符串长度。(在实际的字符串定义中,往往不指定数组长度,比如charstr [])说明:' \ n '代表ASCII码为0的字符。从ASCII码表中可以发现,ASCII码为0的字符不是可显示字符,而是“空运算符”,即什么都不做。当它用作字符串的结束符号时,它不会生成额外的操作或添加有效字符,而只是一个用于标识的符号。从上面了解了C语言处理字符串的方法后,在初始化字符数组的方法中增加一个方法3354,即可以用字符串常量初始化字符数组:char str[ ]={ '我很开心' };可以省略大括号如下:char str[ ]='我很开心';注意:上述字符数组的整体赋值只能在字符数组初始化时使用,不能用于字符数组的赋值。字符数组的赋值只能对其元素逐个赋值。以下赋值方法是错误的char str[];str=‘我很快乐’;

不使用单个字符作为初始值,而是使用一个字符串(注意:字符串两端用双引号" "而不是单引号'')作为初始值。显然,这种方法更加直观和方便。(注意:数组str的长度不是10,而是11。请记住这一点,因为系统会自动在字符串常量' I happy '的末尾添加一个' \0 '。所以上面的初始化等价于下面的初始化charstr []={'i ','',' a ',' m ',而不是下面等价的charstr []={'I ','',' A ',' M ','',' H ',' A ',' P ',' P ',' Y ' };前者的长度是11,后者的长度是10。说明:个字符。数组不要求其最后一个字符是“\0”,甚至不包含“\0”。这样写是完全合法的。char str[5]={'C ',' h ',' I ',' n ',' a ' };可以看出,用两种不同的方法初始化字符数组得到的数组长度是不同的。

# include stdio . hvoid main(void){ char C1[]={ ' I ',' ',' a ',' ',' m ',' ',' h ',' a ',' p ',' y ' };char c2[]='我快乐';int i1=sizeof(C1);int I2=sizeof(C2);printf('%d\n ',i1);printf('%d\n ',I2);}结果:10 11

3、字符串的表示形式在C语言中,字符串有两种表示和存储方式:(1)用字符数组存储一个字符串char str[ ]='我爱中国';(2)用字符指针指向一个字符串char* str='我爱中国';至于第二种表示,有人认为str是一个字符串变量,所以在定义的时候把字符串常量‘我爱中国’直接赋给字符串变量是错误的。c将字符串常量视为字符数组,并在内存中打开一个字符数组来存储字符串常量。程序在定义字符串指针变量str时,只将字符串的第一个地址(即存储字符串的字符数组的第一个地址)赋给str。两种表示方式的字符串输出都用printf('%s\n ',str);%s是指输出一个字符串,给字符指针的变量名str(对于第一种表示方法,字符数组的名字是字符数组的第一个地址,和第二种表示方法中指针的含义一致),那么系统会先输出它所指向的一个字符的数据,然后自动让str自动加1指向下一个字符.这样,直到遇到字符串标识符' \0 '的结尾。

4、对使用字符指针变量和字符数组两种方法表示字符串的讨论虽然字符数组和字符指针变量都可以实现字符串的存储和操作,但它们是不同的,不应该混淆。4.1.字符数组由若干个元素组成,每个元素包含一个字符;但是,地址(字符串/字符数组的第一个地址)存储在字符指针变量中,字符串从不放在字符指针变量中(字符串的第一个地址)。4.2、赋值方式:对字符数组只能赋给每个元素,charstr不能通过以下方式赋给字符数组[14];str='我爱中国';(但在字符数组为初始化时可以,即char str[14]='我爱中国';)对于字符指针变量,使用以下方法赋值:char * a;a=‘我爱中国’;或者char* a='我爱中国';Yes 4.3,给字符指针变量赋一个初始值(初始化):char * a='我爱中国';相当于:char * a;a=‘我爱中国’;而对于字符数组的初始化,char str[14]='我爱中国';不能等效于:char str[14];str='我爱中国';(这不是初始化,是赋值,像这样给数组赋值是不对的)4.4。如果定义了一个字符数组,它就有一个确定的内存地址;在定义字符指针变量时,并不指向某个字符数据,可以多次赋值。

5、字符串处理函数 5.1 char * strcat(char * str 1,const char * 2);char * strcat(char * strDestination,const char * strSource);函数:函数将字符串str2连接到str1的末尾,返回指针str1注意:连接的前两个字符串后有一个' \0 '。连接时去掉字符串1后的' \ 0 ',新字符串末尾只保留一个' \ 0' 5.2 char * strcpy (char * str1,const char * 2);char * strcpy(char * strDestination,const char * strSource);函数:将字符串strSource中的字符复制到字符串strDestination,包括空终止符。是返回值指针strDestination。注意:1,“字符数组1”必须写成数组名,“字符串2”可以是字符数组名,也可以是字符串常量。2,将其与字符串后的' \0 '一起复制到数组1。3,不能用赋值语句直接把字符串常量或字符数组赋给字符数组(和普通变量数组一样),只能用strcpy函数。4.strcpy函数可用于将字符串2中的前几个字符复制到字符数组1中。

郑重声明:本文由网友发布,不代表盛行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算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: