本文内容仅仅代表个人在学习中遇到的问题并作出的总结,如有错误的地方和别的想法可以联系一起学习讨论!
前言
初学C语言数组这块对,因为C语言中没有字串类型,只能使字符数组保存字符串来使用,但是字符数组和字符串数组输出时又有不同点,下面就来简单介绍下!
一、字符数组和字符串数组
字符和字符串的不同点:
①字符使用单引号' '括起来的并且只能是一字符或者转义字符,例如:'A'、'\0'
②字符串是用" "双引号括起来的 ,字符串结尾系统会默认家''例如:"hello!"、"w"
1、字符数组
定义一个字符:
char s[]={'h','e','l','l','o'};
2、字符串数组:
char s1[]="world";
二、过程分析
1.字符数组和字符串输出对比
字符数组长度为5,字符串长度为3('\0'占一个字符)
代码如下(示例):
#include<stdio.h>
int mian(int argc,const char *argv[]){
char s[]={'h','e','l','l','o'};//定义一个字符数组
char s1[]="wo";//定义一个字符串数组
printf("%s\n",s);
}
输出结果:hello
原因分析:
因为数组s是字符数组 ,使用printf输出的时候是以%s(字符串)形式输出的并且默认了至少是5byte,但是又因为字符串输出时遇到'\0'结束,字符数组中没有'\0',所以不会结束,但是字符数组 s1保存的字符串的长度 不够5byte,所以只输出结果:hello
基于上述 原因 :字符长度为5byte,将组字符数组s1中保存的字符串长度也改为长度大于等于5byte,输出的结果就变为了字符数组s中的内容和字符数组s1中保存的字符串内容了,例如将s1="world" 输出 的结果为:helloworld
2.字符数组和字符数组以%s输出
代码如下(示例):
#include<stdio.h>
int mian(int argc,const char *argv[]){
char s[]={'h','e','l','l','o'};//定义一个字符数组
char s1[]={'w','o'};//定义一个字符串数组
printf("%s\n",s);
}
结果:hello
原因分析:
因为数组s是字符数组 ,使用printf输出的时候是以%s(字符串)形式输出的并且默认了至少是5byte,但是又因为字符串输出时遇到'\0'结束,字符数组中没有'\0',所以不会结束,但是字符数组 s1保存的字符的长度 不够5byte,所以只输出结果:hello
基于上述 原因 :字符长度为5byte,将组字符数组s1中保存的字符长度也改为长度大于等于5byte,输出的结果就变为了字符数组s中的内容和字符数组s1中保存的字符内容了,例如将s1={'w','o','r','l','d'}; 输出 的结果为:helloworld
总结
C语言编程还需要多多动手,遇到不清楚的问题,可以通过代码现象判断总结。