文章目录

  • 字符数组的定义
  • 字符数组初始化
  • 字符串存放
  • '\0'的作用

字符数组的定义

同整型数组一样:
一维数组定义:char c[10];
二维数组定义:char ch[3][4];

字符数组初始化

  1. 定义数组时初始化,如: char c[10]={'a','b','c','d'};

    • 按每个字符元素输出时,

      • 输出格式为时printf("%d\t",c[i]);则会输出字符分别对应的ASCII码,后面用0补全;
      • 输出格式为时printf("%c\t",c[i]);则会输出a b c d四个字符,后面元素自动定为空字符(’\0’),输出结果如图:
    • 作为整个字符输出时:printf("%s",ch);则输出abc。
    • 由于字符型数据是以整型数据形式(ASCII码)存放,所以也可以用整型数组来存放字符数据;int a[10]; a[0]='a';缺点:容易造成内存空间的浪费,因为一个整型数据占4个字节,一个字符型数据占1个字节。
  2. 仅定义数组char c[10];后没有对数组初始化,会输出不可预估的值;如果花括号中提供的字符个数>数组长度,则会出现语法错误;
  3. 可以不写数组长度: char c[]={'a','b','c','d'};数组长度即为大括号中的字符个数。可用printf("数组长度为:%d\n",sizeof(c));验证。
  4. 用字符串常量初始化字符数组 char c[]="i am A";末尾自动加’\0’,等同于char c[]={'i',' ','a','m',' ','A','\0'},也可以把大括号去掉char c[]={"i am A"};此时数组长度为7,最后一位是’\0’。
  5. C语言中数组名代表该数组的起始地址,所以不能在初始化后重新赋值。
    如:char str1[]=“china”; str1=str2;编译错误

字符串存放

C语言中没有字符串类型,也没有字符串变量,字符串是存放在字符型数组中的。C语言将字符串作为字符数组来处理

  1. 字符串结束标志—’\0’

    • C系统在字符数组中存放字符串常量时,会自动加一个’\0’作为结束符。如果将"i am A"字符串常量存入一维数组的话,占7个字节,最后一位是’\0’。
    • ‘‘\0’代表ASCII码为0的字符,是一个空操作符,只起一个标志作用。

'\0’的作用

表示字符串结束
如:定义数组 char str1[]=“china”; 如果想用scanf(…)或者gets()对数组中的元素进行修改的话,如:

  char str1[]="china"; scanf("%s",str1);//或gets(str1);puts(str1);/*for(int i=0;i<5;i++){printf("%c\t",str1[i]);}*/

最多可输入长度为6的字符串(包含’\0’),否则会报错;
假设输入的字符串是"ww",用scanf或者gets函数时,会自动给输入的字符串末尾加一个’\0’;所以此时数组str1中存放的元素为: w w \0 n a \0

  • 用puts()输出和for循环遍历输出的结果是不一样的:

    • puts将第一个\0前的字符串输出,输出结果为 : w w;
    • for循环是将元素一一输出,输出结果为: w w \0(不输出) n a \0(不输出) ;
  • 如果将for循环中的循环条件i<5改为i<strlen(str1)后,跟puts的输出结果是一样的。说明strlen()计算字符数组长度也是计算到第一个’\0’结束。

字符数组的初始化及字符串的使用相关推荐

  1. C语言中字符数组的初始化与赋值,字符串相关函数

    C语言中字符数组的初始化与赋值,字符串相关函数! 1.字符数组初始化 在C语言中,字符串是当做字符数组来处理的:所以字符串有两种声明方式,一种是字符数组,一种是字符指针. (1)直接逐个初始化字符数组 ...

  2. 字符串,字符数组的初始化

    先上代码: #include<stdio.h>int main() {char* s1 = (char *)"aaaaa";// char * s2={'b','b', ...

  3. C语言中字符数组的初始化与注意事项

    在C语言中字符数组的初始化有三种常见的方法: char a[5] = {'a','b','c','d','e'};char c[] = {'a','b','c','d','e'};char b[] = ...

  4. 用字符数组存放和处理字符串

    字符串 字符串是用双引号括起来的字符序列.比如,"China".字符串常量会在字符序列末尾添加'\0'作为结尾标记.字符串在内存中按照串中字符的排列顺序存放,并在末尾会添加'\0' ...

  5. 字符数组的初始化与赋值

    代码编译运行环境:VS2017+Win32+Debug 1.字符数组的初始化方式 C语言中表示字符串有两种方式,数组和指针,字符数组是我们经常使用的方式.变量的定义包括指明变量所属类型.变量名称.分配 ...

  6. C语言字符数组的初始化

    1.字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素. char str[10]={ 'I',' ','a','m',' ','h','a','p','p','y ...

  7. C语言中字符数组的初始化与赋值

    1.字符数组初始化 在C语言中,字符串是当做字符数组来处理的:所以字符串有两种声明方式,一种是字符数组,一种是字符指针. 字符数组初始化 char parr[] = "zifuchuansh ...

  8. 关于字符数组的初始化

    字符数组可以在定义时进行初始化.有两种初始化方法. 方法1:逐个字符赋给数组中各元素.这种方法最容易理解.例如: char c[5]={ 'H','a','p','p','y' }; 把5个字符分别赋 ...

  9. java定义字符串数组_java字符数组用法总结,java字符串数组的定义与使用

    java字符数组,java数组的定义与使用 二维数组 String[] str = new String[5]; //创建一个长度为5的String(字符串)型的一维数组 String[] str = ...

最新文章

  1. Python:模拟登录、点击和执行 JavaScript 语句案例
  2. Hadoop:HDFS NameNode内存全景
  3. sklearn自学指南(part38)--OPTICS
  4. JS设计模式七:发布-订阅模式
  5. 实训09.11:数据库一些简单操作
  6. 全球加速产品 方便更多学生获得申请名校的机会
  7. 笔记本安装centos7.6网络的配置_可以放入口袋里面的笔记本电脑:国产黑科技,户外工程师必备利器...
  8. 一个简单的Eclipse调试Debug流程(四)
  9. [译]Chapter 1 - An Introduction to ASP.NET MVC(2)
  10. 解决Centos7 yum 出现could not retrieve mirrorlist 错误
  11. 分布式锁--Redis实现
  12. 如何借助大数据提升医疗质量管理
  13. 电子设计竞赛方案搜集
  14. 修复VS2010 Beat2的Application cannot start”问题
  15. AdventureWorks 安装和配置[转自 微软msdn]
  16. godot常用的一些概念、组件(整理于官方教程)
  17. 城市聚焦:全球十二大性感之城
  18. 对电话号码进行格式校验、脱密、加密、解密、掩码等的操作介绍
  19. leetcode 每日一题 一起进步714 买卖股票的最佳时机含手续费
  20. opencv获取不规则图像

热门文章

  1. 一个中科大差生,8 年程序员生涯感悟(强烈推荐)
  2. 基于jquery的搜索框输入提示
  3. 【TransMEF】
  4. 升级本地javaweb项目为https访问
  5. ctf【ciscn_2019_s_3】
  6. 博客导航——一站式搜索(所有博客的汇总帖)
  7. INFLUXDB-influxDB一些查询语法你必须知道
  8. Mac环境配置SSH Key
  9. Linux服务器百万并发实现与问题排查
  10. Oracle安装与配置(Linux)