1
1
1
1
、字符数组的定义与初始化
字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。
char
char
char
char str[10]={
str[10]={
str[10]={
str[10]={ 'I','
'I','
'I','
'I',' ','a','m','
','a','m','
','a','m','
','a','m',' ',
',
',
', ‘
‘
‘
‘ h
h
h
h ’
’
’
’ ,'a','p','p','y'};
,'a','p','p','y'};
,'a','p','p','y'};
,'a','p','p','y'};
即把 10
10
10
10 个字符分别赋给 str[0]
str[0]
str[0]
str[0] 到 str[9]10
str[9]10
str[9]10
str[9]10 个元素
如果花括号中提供的字符个数大于数组长度,则按语法错误处理;若小于数组
长度,则只将这些字符数组中前面那些元素,其余的元素自动定为空字符(即
' '
' '
' '
' ' )
)
)
) 。
2
2
2
2 、字符数组与字符串
在 c
c
c
c 语言中,将字符串作为字符数组来处理 。 ( c++
c++
c++
c++ 中不是)
在实际应用中人们 关心的是有效字符串的长度而不是字符数组的长度 ,例如,
定义一个字符数组长度为 100
100
100
100 , 而实际有效字符只有 40
40
40
40 个 , 为了测定字符串的实
际长度, C
C
C
C 语言规定了一个 “
“
“
“ 字符串结束标志 ”
”
”
” ,以字符 '
'
'
' ’
’
’
’ 代表。如果有一个字
符串 , 其中第 10
10
10
10 个字符为 ' '
' '
' '
' ' , 则此字符串的有效字符为 9
9
9
9 个 。 也就是说 , 在遇到
第一个字符
' '
' '
' '
' '
时,表示字符串结束,由它前面的字符组成字符串。
系统对 字符串 常量 也 自动加一个 ' '
' '
' '
' ' 作为结束符。例如 "C
"C
"C
"C Program
Program
Program
Program ”
”
”
” 共有 9
9
9
9 个字
符 , 但在内存中占 10
10
10
10 个字节 , 最后一个字节 ' '
' '
' '
' ' 是系统自动加上的 。 ( 通过 sizeof()
sizeof()
sizeof()
sizeof()
函数可验证)
有了结束标志 ' '
' '
' '
' ' 后,字符数组的长度就显得不那么重要了 ,在程序中往往依靠
检测 ' '
' '
' '
' ' 的位置来判定字符串是否结束,而不是根据数组的长度来决定字符串长
度。当然,在定义字符数组时应估计实际字符串长度,保证数组长度始终大于
字符串实际长度 。 ( 在实际字符串定义中 , 常常并不指定数组长度 , 如 char
char
char
char str[
str[
str[
str[ ]
]
]
] )
说明 : '
'
'
' ’
’
’
’ 代表 ASCII
ASCII
ASCII
ASCII 码为 0
0
0
0 的字符,从 ASCII
ASCII
ASCII
ASCII 码表中可以查到 ASCII
ASCII
ASCII
ASCII 码为 0
0
0
0 的
字符不是一个可以显示的字符,而是一个 “
“
“
“ 空操作符 ”
”
”
” ,即它什么也不干。用它
来作为字符串结束标志不会产生附加的操作或增加有效字符,只起一个供辨别
的标志。