a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 85|回复: 1

[C语言] 2012年计算机二级C语言字符串考点小结

[复制链接]
发表于 2012-7-31 21:48:08 | 显示全部楼层 |阅读模式
10.1 字符串与字符数组 , m8 [- o  H% j
  1.字符数组的定义 " u5 U2 W) ~: |
  定义方法与前面介绍的类似,只是将数组定义为字符型即可。例如: / C- _, V" u$ M) `
  char c[10];
' V9 v  w$ t3 i& q( `% F  这里定义了一个包含10个元素的字符数组c。
2 h" a6 d9 L/ J* [9 R: \5 N. M: y3 V  2.字符数组的初始化
$ r- @, [% g! q( q& r  对字符数组初始化,可以采用以下方法: 8 X5 w+ f6 u8 ]& B* b' a! A
  (1)逐个字符赋给数组中各元素; ' j9 [' ^2 a1 M' \7 f- T* _4 ?
  (2)用字符串常量使字符数组初始化。 + k( V9 C* j7 c0 B. ~0 }8 x! j# G
  3.字符串 # s  m* l- `: R: A4 d' s
  在C语言中,字符串是作为字符数组来处理的,字符串可以存放在字符型一维数组中,故可以把字符型一维数组作为字符串变量。
1 A, M1 X- I1 p& |: ^1 Y  字符串常量是用双引号括起来的一串字符。
2 x3 i0 M7 p6 t6 V# [+ y7 {  C语言中约定用′\0′作为字符串的结束标志,它占内存空间,但不计入串的长度,′\0′的代码值为0。   K) y# t) \6 o2 R  H
  系统对字符串常量也自动加一个′\0′作为结束符。例如″c language″共有10个字符,但在内存中占11个字节,最后一个字节存放′\0′。 + U, c8 [+ q% w8 N
  4.字符数组的输入输出
- M4 {, K6 l( C* F. N9 @3 g  (1)逐个字符输入和输出 8 c0 @# ^0 I( B0 C1 k$ e4 y5 d
  ①在标准输入输出printf和scanf中使用%c格式描述符;   [' e1 J' p0 f2 k
  ②使用getchar和putchar函数。例如: - }- X; Z4 ^% u5 Q. ]
  for(i=0;i
回复

使用道具 举报

 楼主| 发表于 2012-7-31 21:48:09 | 显示全部楼层

2012年计算机二级C语言字符串考点小结

  10.2 字符串的指针以及指向字符串的指针变量
( i, N6 y0 P4 Q* I0 D  `  1.用指针方法实现一个字符串的存储和运算 ! C/ S" e( R9 ]8 F' a( {
  如: : v& l& g5 p4 `
  char * strp=″china″; ! R( W' J9 e' v" E
  此处定义了一个字符指针变量strp,变量中存放的是字符串第一个字符的地址。
( J: m1 {* [6 J7 l+ y4 q- d& F  C语言对字符串常量是按字符数组处理的,它实际上在内存开辟了一个字符数组用来存放字符串变量,并把字符串首地址赋给字符指针变量strp。
4 E% b0 M# w$ w8 O  c  在输出时用
, Q4 z  D! u) F6 C, ?$ |+ {  printf(″%s\n″,strp);
; u7 s* P& R1 L  通过字符数组名或字符指针变量可以输出一个字符串。而对一个数值型数组,是不能企图用数组名输出它的全部元素的。 : v3 o: W! N1 `# g- C5 x$ F
  2.字符指针变量与字符数组 : x% ]4 Z- }: v7 F
  虽然用字符数组和字符指针变量都能实现字符串的存储和运算,但它们二者之间是有区别的,不应混为一谈,主要有以下几点:
: K( o. ^* Q) o6 s  (1)字符数组由若干个元素组成,每个元素中放一个字符,而字符指针变量中存放的是地址(字符串的首地址),决不是将字符串放到字符指针变量中。
0 c& U8 C2 `) u7 p  (2)对字符数组只能对各个元素赋值,不能用以下办法对字符数组赋值。
- y* v+ D6 e  o& |: L  Char str[14]; 4 t. d; ?1 N" V3 x: ~/ L, F1 ?4 o
  str=″I love China!″; ; p6 Q( K$ [( U5 d! T4 U
  而对字符指针变量,可以采用下面方法赋值:
8 k% t& _0 Q4 Y5 O  char *a;
2 h0 E# J: c" I. E  a=″I love China!″; * v( X) L" Q/ X
  但注意赋给a的不是字符,而是字符串的首地址。
+ N4 \9 u: \3 O$ ]6 [! J/ L  (3)赋初值时,对以下的变量定义和赋初值:
; x$ B: r2 V8 q' p" p8 ~3 W  char *a=″I love China!″;
) d* [" C! p7 L* u! b  等价于: 9 C) t) f+ U4 H: A. ^8 J
  char *a; 2 t5 l( e1 B3 O' p
  a=″I love China!″;
+ B9 B, t* d8 x# p7 {1 v3 b  而对数组初始化时:
" `% o) a; D+ q6 F; G  static char str[14]={″I love China!″};
% b3 E$ Y1 P* F  不能等价于
1 r" ?- o1 l& h* a1 o7 J; L7 _  char str[14];
/ c$ p7 Z' m8 Z9 R8 R3 B! c- }  str[]={″I love China!″}; ( M6 h) i# d8 U( ^+ h4 F1 W- [0 a
  即数组可以在变量定义时整体赋初值,但不能在赋值语句中整体赋值。 " D; O2 d4 H9 H2 F3 d, s# Z
  (4)在定义一个数组时,在编译时即已分配内存单元,有确定的地址。而定义一个字符指针变量时,给指针变量分配内存单元,在其中可以放一个地址值,就是说,该指针变量可以指向一个字符型数据,但如果未对它赋予一个地址值,这时该指针变量并未具体指向哪一个字符数据。 1 g5 ^' }# h6 _  m: P
  (5)指针变量的值是可以改变的。 " y/ k& m" P1 i2 y! w$ H
  3.字符串处理函数 - x' e7 M6 ^* B- M1 _( `
  C语言中没有对字符串进行合并、比较和赋值的运算符,但几乎所有版本的C语言中都提供了有关的库函数。例如: & X# w  }: M7 _8 u2 w) ]
  (1)strcat函数:连接两个字符数组中的字符串
/ e. N+ O4 W; a/ P0 Y6 F; i" D  (2)strcpy函数:字符拷贝函数
6 I1 E- c" o6 V  (3)strcmp函数:字符比较函数 $ x4 C, S8 ~0 h% B: w
  (4)strlen函数:测试字符串长度的函数 - d0 n  w9 C8 h" h# Y  |6 y: L
  (5)strlwr函数:将字符串中大写字母转换成小写字母   (6)strupr函数:将字符中小写字母转换成大写字母
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-16 03:47 , Processed in 0.200131 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表