字符数组的初始化及字符串的使用
文章目录
- 字符数组的定义
- 字符数组初始化
- 字符串存放
- '\0'的作用
字符数组的定义
同整型数组一样:
一维数组定义:char c[10];
二维数组定义:char ch[3][4];
字符数组初始化
- 定义数组时初始化,如:
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个字节。
- 按每个字符元素输出时,
- 仅定义数组char c[10];后没有对数组初始化,会输出不可预估的值;如果花括号中提供的字符个数>数组长度,则会出现语法错误;
- 可以不写数组长度:
char c[]={'a','b','c','d'};
数组长度即为大括号中的字符个数。可用printf("数组长度为:%d\n",sizeof(c));
验证。 - 用字符串常量初始化字符数组
char c[]="i am A";
末尾自动加’\0’,等同于char c[]={'i',' ','a','m',' ','A','\0'}
,也可以把大括号去掉char c[]={"i am A"};
此时数组长度为7,最后一位是’\0’。 - C语言中数组名代表该数组的起始地址,所以不能在初始化后重新赋值。
如:char str1[]=“china”; str1=str2;编译错误
字符串存放
C语言中没有字符串类型,也没有字符串变量,字符串是存放在字符型数组中的。C语言将字符串作为字符数组来处理
- 字符串结束标志—’\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’结束。
字符数组的初始化及字符串的使用相关推荐
- C语言中字符数组的初始化与赋值,字符串相关函数
C语言中字符数组的初始化与赋值,字符串相关函数! 1.字符数组初始化 在C语言中,字符串是当做字符数组来处理的:所以字符串有两种声明方式,一种是字符数组,一种是字符指针. (1)直接逐个初始化字符数组 ...
- 字符串,字符数组的初始化
先上代码: #include<stdio.h>int main() {char* s1 = (char *)"aaaaa";// char * s2={'b','b', ...
- C语言中字符数组的初始化与注意事项
在C语言中字符数组的初始化有三种常见的方法: char a[5] = {'a','b','c','d','e'};char c[] = {'a','b','c','d','e'};char b[] = ...
- 用字符数组存放和处理字符串
字符串 字符串是用双引号括起来的字符序列.比如,"China".字符串常量会在字符序列末尾添加'\0'作为结尾标记.字符串在内存中按照串中字符的排列顺序存放,并在末尾会添加'\0' ...
- 字符数组的初始化与赋值
代码编译运行环境:VS2017+Win32+Debug 1.字符数组的初始化方式 C语言中表示字符串有两种方式,数组和指针,字符数组是我们经常使用的方式.变量的定义包括指明变量所属类型.变量名称.分配 ...
- C语言字符数组的初始化
1.字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素. char str[10]={ 'I',' ','a','m',' ','h','a','p','p','y ...
- C语言中字符数组的初始化与赋值
1.字符数组初始化 在C语言中,字符串是当做字符数组来处理的:所以字符串有两种声明方式,一种是字符数组,一种是字符指针. 字符数组初始化 char parr[] = "zifuchuansh ...
- 关于字符数组的初始化
字符数组可以在定义时进行初始化.有两种初始化方法. 方法1:逐个字符赋给数组中各元素.这种方法最容易理解.例如: char c[5]={ 'H','a','p','p','y' }; 把5个字符分别赋 ...
- java定义字符串数组_java字符数组用法总结,java字符串数组的定义与使用
java字符数组,java数组的定义与使用 二维数组 String[] str = new String[5]; //创建一个长度为5的String(字符串)型的一维数组 String[] str = ...
最新文章
- Python:模拟登录、点击和执行 JavaScript 语句案例
- Hadoop:HDFS NameNode内存全景
- sklearn自学指南(part38)--OPTICS
- JS设计模式七:发布-订阅模式
- 实训09.11:数据库一些简单操作
- 全球加速产品 方便更多学生获得申请名校的机会
- 笔记本安装centos7.6网络的配置_可以放入口袋里面的笔记本电脑:国产黑科技,户外工程师必备利器...
- 一个简单的Eclipse调试Debug流程(四)
- [译]Chapter 1 - An Introduction to ASP.NET MVC(2)
- 解决Centos7 yum 出现could not retrieve mirrorlist 错误
- 分布式锁--Redis实现
- 如何借助大数据提升医疗质量管理
- 电子设计竞赛方案搜集
- 修复VS2010 Beat2的Application cannot start”问题
- AdventureWorks 安装和配置[转自 微软msdn]
- godot常用的一些概念、组件(整理于官方教程)
- 城市聚焦:全球十二大性感之城
- 对电话号码进行格式校验、脱密、加密、解密、掩码等的操作介绍
- leetcode 每日一题 一起进步714 买卖股票的最佳时机含手续费
- opencv获取不规则图像