原创 字符数组的初始化问题

2012-6-18 22:02 1728 24 25 分类: 消费电子

 作者:征途中的人(转载,请注明作者,请尊重原创)

 

一、一位数组的初始化

1、在定义数组时对数组元素赋予初值

int a[3]={1,2,3};

2、只给部分元素赋值

Int a[3]={1,2};

3、在对数组全部元素赋初值,由于数组个数已经确定,因此可以不指定数组长度

int a[3]={1,2,3};

int a[]={1,2,3}; //数组长度为3

4、如果想一个数组中全部元素为零,可以写成

int a[3]={0,0,0};

Int a[3]={0};

 

二、字符数组的一般初始化

1、最容易理解的方式是在定义时候,逐个字符赋给数组中的各个元素,进行初始化

Char c[3]={‘a’,’b’,’c’};

2、如果对在定义字符数组不初始化,则数组中各个元素的值是不可预料的。

字符个数大于数组长度则按语法错误处理。 Char c[2]={‘a’,’b’,’c’};

字符个数小于数组长度则其余元素自动定为空字符。Char c[4]={‘a’,’b’,’c’};

如下图:

 

C[0]

C[1]

C[2]

C[3]

a

b

c

\0

 

 

 

 

 

3、如果字符个数与数组长度相同,在定义时可以省去数组长度,系统会自动根据数组字符个数确定数组长度。

Char c[5]={‘a’,’b’,’c’};  //长度为3

三、对字符串常量的一些认识

编译系统对字符串常量会自动加个’\0’作为结束标志。

 

用过以下语句输出一个字符串。

Printf(“how do you do?\n”);

 

在执行此语句时系统怎么知道应该输出哪里为止呢?

实际上,在内存中存放时,系统自动在最后一个字符’\n’的后面加个’\0’作为字符串结束标志。在执行printf函数时,每输出一个字符检查一次,看一个字符是否’\0’,遇到’\0’就停止输出。

 

四、用字符串常量使字符数组初始化

1、在定义字符数组的时候用字符串进行初始化

Char c[4]={“abc”}

 

需要说明的是:字符数组并不要求它的最后一个字符为’\0’,甚至可以不包含’\0’,像一下的写法是合法的

Char c[3]={“abc”}; 或 Char c[3]={‘a’,’b’,’c’};

 

是否要加’\0’,完全根据需要决定,但是由于系统对字符串常量自动加’\0’,因此为了使处理方法一致,便于测定字符串的实际长度,以及在程序中作为相应的处理。在字符处理上也会人为的加上一个’\0’.例如:

Char c[4]={‘a’,’b’,’c’,’\0’};

这样便于引用字符数组中的字符串。

 

 

char c[5]={“hello”}; 和char c[6]={“hello”};有什么区别呢

在字符串存储中最后都会自动加个一个结束符’\0’.所以存储5个字符需要6个空间。

所以char c[5]={“hello”};缺少结束符,但是调用c[0],c[1],c[2],c[3],c[4],是可以使用的,但是使用strlen(c),strcpy()等函数就会出现错误,因为找不到结束标志。

 

char c[6]={“hello”};可以正常使用,因为有结束标志’\0’,c[5]=’\0’;

 

2、可以部分赋值

Char c[6]={“abc”};

前三个元素为a,b,c,第四个元素为’\0’,后两个元素为空字符

 

a

b

c

\0

\0

\0

 

3、可以省略数组长度

Char c[]={“abc”} 或char c[]=”abc”  //数组长度为4

等价于

Char c[]={‘a’,’b’,’c’,’\0’};

不等价于

Char c[]={‘a’,’b’,’c’};

 

 

【上海索漫科技】提供

 

文章评论1条评论)

登录后参与讨论

用户1607052 2012-6-24 21:27

大学期末考试水平。别喷我,我是软件菜鸟,正在折腾软件(实际上是被软件折腾)
相关推荐阅读
用户1617991 2015-06-09 08:58
评论:@武晔卿 博客中提到的“数据端口的波形质量分析与仿真”
很实在的文章...
用户1617991 2014-03-28 20:18
评论:@ARM-AVR嵌入式开发 博客中提到的“基于LM393的电机保护电路设计”
不错的...
用户1617991 2014-03-11 20:39
评论:@赛小小's Blog 博客中提到的“继电器的原理和分类详解”
不错啊...
用户1617991 2014-03-11 20:38
评论:@ecbomron's Blog 博客中提到的“欧姆龙继电器在生活中的应用”
不错啊...
用户1617991 2014-03-11 20:38
评论:@ecbomron's Blog 博客中提到的“欧姆龙继电器主要应用在哪?”
不错啊...
用户1617991 2014-03-11 20:38
评论:@ecbomron's Blog 博客中提到的“欧姆龙DC功率继电器使用注意事项”
不错啊...
我要评论
1
24
关闭 站长推荐上一条 /2 下一条