第六章 数组指针与字符串_第1页
第六章 数组指针与字符串_第2页
第六章 数组指针与字符串_第3页
第六章 数组指针与字符串_第4页
第六章 数组指针与字符串_第5页
已阅读5页,还剩88页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 数组是具有数组是具有一定顺序一定顺序关系的若干关系的若干相同类型相同类型变量变量的集合体,组成数组的变量称为该的集合体,组成数组的变量称为该数组的元素数组的元素。数组属于数组属于构造类型构造类型。一维数组的声明一维数组的声明类型说明符类型说明符 数组名数组名 常量表达式常量表达式 ;例如:例如: int a10; 表示表示 a 为整型数组,有为整型数组,有10个元素:个元素:a0.a9引用:必须先声明,后使用。引用:必须先声明,后使用。只能逐个引用数组元素,而不能一次引用整个数组!只能逐个引用数组元素,而不能一次引用整个数组!例如:例如:a0=a5+a7-a2*3/ 数组元素的使用数组元素的

2、使用#include void main() double a3; a0 = 11.11; a1 = 33.33; a2 = 55.55; cout a0 = a0 endl; cout a1 = a1 endl; cout a2 = a2 endl; cout a0 + a1 + a2 = a0 + a1 + a2 endl;/* 程序运行结果程序运行结果 *a0 = 11.11a1 = 33.33a2 = 55.55a0 + a1 + a2 = 99.99* 程序结束程序结束 */数组元素在内存中顺次存放,它们的地址是连数组元素在内存中顺次存放,它们的地址是连续的。续的。例如:具有例如:具

3、有10个元素的数组个元素的数组 a,在内存中的存放次在内存中的存放次序如下:序如下:数组名字是数组首元素的内存地址。数组名字是数组首元素的内存地址。数组名是一个常量,不能被赋值。数组名是一个常量,不能被赋值。a0 a1a2 a3 a4a5 a6 a7a8 a9a/ #include void main() const int SIZE=5; double aSIZE; int i; cout Enter SIZE numbers: ; for (i = 0; I ai; cout = 0; i -) cout ai ; cout endl;/* 程序运行结果程序运行结果 *Enter 5 nu

4、mbers: 1 3 5 7 9In reverse order: 9 7 5 3 1* 程序结束程序结束 */可以在可以在编译阶段编译阶段使数组得到初值:使数组得到初值:在声明数组时对数组元素赋以初值。在声明数组时对数组元素赋以初值。例如:例如:static int a10 = 0,1,2,3,4,5,6,7,8,9 ;可以只给一部分元素赋初值。可以只给一部分元素赋初值。例如:例如:static int a10 = 0,1,2,3,4 ; 在对全部数组元素赋初值时,可以不指定数组在对全部数组元素赋初值时,可以不指定数组长度。长度。例如:例如:static int a = 1,2,3,4,5

5、;/ 一维数组的初始化一维数组的初始化#include void main() float a = 22.2, 44.4, 66.6 ; int size = sizeof(a)/sizeof(float); for (int i=0; isize; i+) cout a i = ai endl;/* 程序运行结果程序运行结果 *a0 = 22.2a1 = 44.4a2 = 66.6* 程序结束程序结束 */ Causing an unhandled exception#include void main() double a = 22.2, 44.4, 66.6 ; double x=11.

6、1; cout x = x endl; a3333 = 88.8; / ERROR ! cout x = x endl; cout a endl;/* 程序运行结果程序运行结果 *x = 11.1/用数组来处理求用数组来处理求Fibonacci数列数列,输出前输出前20项。项。#include void main() int i ; static int f20 = 1 , 1 ; /初始化第初始化第0、1个数个数 for(i = 2; i 20; i +) fi = fi-2 + fi-1 ; /求第求第219个数个数 for(i = 1; i = 20; i +) /输出输出,每行每行5个

7、数个数 cout fi-1 t ; if(i%5=0) cout endl ; 二维数组的声明二维数组的声明类型说明符类型说明符 数组名数组名常量表达式常量表达式常量表达式常量表达式例如:例如:float a34;引用引用例如:例如:b12=a23/2存储顺序存储顺序:按行存放按行存放分行给二维数组赋初值分行给二维数组赋初值static int a34=1,2,3,4,5,6,7,8,9,10,11,12;将所有数据写在一个将所有数据写在一个内,按顺序赋值内,按顺序赋值static int a34=1,2,3,4,5,6,7,8,9,10,11,12;可以对部分元素赋初值可以对部分元素赋初值例

8、如:例如:static int a34=1,0,6,0,0,11;数组元素作实参,与单个变量一样。数组元素作实参,与单个变量一样。数组名作参数,形、实参数都应是数组名,类数组名作参数,形、实参数都应是数组名,类型要一样,型要一样,。/ Passing an array to a function#include void read(int a , int& n);void print(int a , int n);int sum(int a , int n);void main( ) const int MAXSIZE=100; int aMAXSIZE=0, size; read(a

9、,size); cout 数组中有数组中有 size 个元素个元素: ; print(a,size); cout 数组中各元素的和为数组中各元素的和为 sum(a,size) endl;/* 程序运行结果程序运行结果 *输入整数输入整数(输入输入0, 则结束则结束!):a0: 2a1: 4a2: 6a3: 0数组中有数组中有 3 个元素个元素: 2 4 6数组中各元素的和为数组中各元素的和为 12* 程序结束程序结束 */void read(int a , int& n) cout 输入整数输入整数(输入输入0, 则结束则结束!):n; n = 0; do cout a n an; w

10、hile (an+ != 0); -n; / dont count the 0void print(int a , int n) for (int i=0; in; i+) cout ai ; cout endl;int sum(int a , int n) int sum=0; for (int i=0; in; i+) sum += ai; return sum;#include void RowSum(int A 4, int nrow) for (int i = 0; i nrow; i+) int sum = 0; for(int j = 0; j 4; j+) sum += Aij

11、; cout Sum of row i is sum endl; void main(void) int Table34 = 1,2,3,4,2,3,4,5,3,4,5,6; for (int i = 0; i 3; i+) for (int j = 0; j 4; j+) cout Tableij ; cout endl; RowSum(Table,3);/* 程序运行结果程序运行结果 *1 2 3 42 3 4 53 4 5 6Sum of row 0 is 10Sum of row 1 is 14Sum of row 2 is 18* 程序结束程序结束 */定义:定义:类名类名 数组名数

12、组名元素个数元素个数;访问方法:访问方法:通过下标访问通过下标访问 数组名数组名下标下标.成员名成员名 数组中每一个元素对象被创建时,系统都会调数组中每一个元素对象被创建时,系统都会调用构造函数类初始化该对象。用构造函数类初始化该对象。通过初始化列表赋值。通过初始化列表赋值。例:例: Location A2 = Location(1,2),Location(3,4);如果没有为数组元素指定显式初始值,数组元素使如果没有为数组元素指定显式初始值,数组元素使用缺省值初始化(调用缺省构造函数)。用缺省值初始化(调用缺省构造函数)。Location B2 = Location(5,8);Locatio

13、n C2;不定义构造函数,则采用缺省构造函数。不定义构造函数,则采用缺省构造函数。各元素对象的初值要求为相同的值时,可以定义出各元素对象的初值要求为相同的值时,可以定义出具有缺省形参值的构造函数。具有缺省形参值的构造函数。各元素对象的初值要求为不同的值时,需要定义带各元素对象的初值要求为不同的值时,需要定义带形参(无缺省值)的构造函数。形参(无缺省值)的构造函数。当数组中每一个对象被删除时,系统都要调用一次当数组中每一个对象被删除时,系统都要调用一次析构函数。析构函数。/Location.h#if ! defined(_LOCATION_H)#define _LOCATION_Hclass L

14、ocation public: Location( ); Location(int xx,int yy); Location( ); void Move(int x,int y); int GetX() return X; int GetY() return Y; private: int X,Y;#endif#include#include Location.hLocation:Location() X = Y = 0; cout Default Constructor called. endl;Location:Location(int xx, int yy) X = xx; Y = yy

15、; cout Constructor called. endl;Location:Location() cout Destructor called. endl;void Location:Move(int x, int y) X = x; Y = y;/6_3.cpp#include#include Location.hint main() coutEntering main.endl; Location A2; for(int i=0;i2;i+) Ai.Move(i+10,i+20); coutExiting main.endl; return 0;/* 程序运行结果程序运行结果 *En

16、tering main.Default Constructor called.Default Constructor called.Exiting main.Destructor called.Destructor called.* 程序结束程序结束 */指针:另一个变量的地址指针:另一个变量的地址, 用于间接访问变量用于间接访问变量指针变量:用于存放地址的变量指针变量:用于存放地址的变量指针运算符:指针运算符:*取地址运算符:取地址运算符:&声明声明int i;int *i_pointer=&i; / 指向整型变量指向整型变量i的指针的指针引用引用例例1: i=3;例例2:

17、*i_pointer=3;语法形式语法形式 存储类型存储类型 数据类型数据类型 *指针名初始地址;指针名初始地址;例:例: int *pa=&a;注意事项注意事项 用变量地址作为初值时,该变量必须在指针初用变量地址作为初值时,该变量必须在指针初始化之前已说明过,且变量类型应与指针类型一致。始化之前已说明过,且变量类型应与指针类型一致。 可以用一个已赋初值的指针去初始化另一可以用一个已赋初值的指针去初始化另一 个个指针变量。指针变量。 不要用一个内部不要用一个内部 auto auto 型变量去初始化型变量去初始化 static static 型指针。型指针。/由书由书P163. 例例6-

18、5改编改编#includevoid main() int *p ; int i ; / int *p , i ; p = & i ; i=10; cout i = i endl ; cout & i = & i endl ; cout * p = * p endl ; cout p = p endl ; cout & p = & p endl ;/* 程序运行结果程序运行结果 * i = 10 & i = 0 x0012FF78 * p = 10 p = 0 x0012FF78 & p = 0 x0012FF7C* 程序结束程序结束 */

19、指针与整数的加减运算指针与整数的加减运算 指针指针 p 加上或减去加上或减去 n ,其意义是指针当前指向其意义是指针当前指向位置的前方或后方第位置的前方或后方第 n 个数据的地址。个数据的地址。 运算的结果值取决于指针指向的数据类型。运算的结果值取决于指针指向的数据类型。指针加一,减一运算指针加一,减一运算 指向下一个或前一个数据。指向下一个或前一个数据。例如:例如:y=*px+ 相当于相当于 y=*(px+) (*和和+优先级相同,自右向左运算优先级相同,自右向左运算) papa-2pa-1pa+1pa+2pa+3*(pa-2)*pa*(pa+1)*(pa+2)*(pa+3)*(pa-1)s

20、hort *papb-1pbpb+1pb+2*(pb-1)*pb*(pb+1)*(pb+2)long *pb关系运算关系运算 指向相同类型数据的指针之间可以进行各种关指向相同类型数据的指针之间可以进行各种关系运算。系运算。 指向不同数据类型的指针,以及指针与一般整指向不同数据类型的指针,以及指针与一般整数变量之间的关系运算是无意义的。数变量之间的关系运算是无意义的。指针可以和零之间进行等于或不等于的关系运算。指针可以和零之间进行等于或不等于的关系运算。例如:例如:p=0或或p!=0指针名指针名=地址地址“地址地址”中存放的数据类型与指针类型必须相符。中存放的数据类型与指针类型必须相符。向指针变

21、量赋的值必须是地址常量或变量,不能是向指针变量赋的值必须是地址常量或变量,不能是普通整数。但可以赋值为整数普通整数。但可以赋值为整数0,表示空指针。,表示空指针。 允许定义指向允许定义指向 void 类型的指针。该指针可以类型的指针。该指针可以被赋予任何类型对象的地址。被赋予任何类型对象的地址。例:例: void *general; 定义与赋值定义与赋值例:例: int a10, *pa; pa=&a0; 或或 pa=a;通过指针引用数组元素通过指针引用数组元素经过上述定义及赋值后:经过上述定义及赋值后:*pa就是就是a0,*(pa+1)就是就是a1,*(pa+i)就是就是ai.ai,

22、 *(pa+i), *(a+i), pai都是等效的。都是等效的。不能写不能写 a+,因为因为a是数组首地址,是是数组首地址,是。#include void main() const int SIZE = 3; int aSIZE = 55, 66, 77 ; cout a = a endl; cout sizeof(int) = sizeof(int) endl; int * end = a + SIZE; / converts SIZE to offset 6 int sum = 0; for ( int * p = a; p end; p +) sum += *p; cout p = p

23、; cout *p = *p; cout sum = sum endl; cout end = end endl;/* 程序运行结果程序运行结果 *a = 0 x0012FF70sizeof(int) = 4 p = 0 x0012FF70 *p = 55 sum = 55 p = 0 x0012FF74 *p = 66 sum = 121 p = 0 x0012FF78 *p = 77 sum = 198end = 0 x0012FF7C* 程序结束程序结束 */#include void main() int a = 22, 33, 44, 55, 66; int *p; cout a =

24、 a , *a = *a endl; for (p = a; p a + 5; p+) cout p = p , *p = *p endl;/* 程序运行结果程序运行结果 *a = 0 x0012FF6C, *a = 22p = 0 x0012FF6C, *p = 22p = 0 x0012FF70, *p = 33p = 0 x0012FF74, *p = 44p = 0 x0012FF78, *p = 55p = 0 x0012FF7C, *p = 66* 程序结束程序结束 */使用数组下标使用数组下标void main( ) int a10 ; int i ; for ( i = 0 ;

25、 i ai ; cout endl ; for ( i = 0 ; i10 ; i + ) cout ai ;/使用数组名使用数组名void main( ) int a10 ; int i ; for ( i = 0 ; i ai ; cout endl ; for ( i = 0 ; i 10 ; i +)cout * ( a + i ) ;/使用指针变量使用指针变量void main( ) int a10 ; int *p , i ; for ( i = 0 ; i ai ; cout endl ; for ( p = a ; p ( a + 10 ) ; p + ) cout * p ;

26、#include void swap(int *p1, int *p2)int p;p=*p1; *p1=*p2; *p2=p; void main( )int a,b;int *p1, *p2; cin a b;p1 = & a; p2 = & b; if ( a b ) swap ( p1 , p2 ); cout a = a tb = b endl;/* 程序运行结果程序运行结果 *22 99a = 99 b = 22* 程序结束程序结束 */#include void invert(int *p ,int n) /实参是数组名时形参可以是指针。实参是数组名时形参可以是指

27、针。 int temp, i , j , m = (n-1)/2; for(i=0;i=m;i+) j=n-1-i; /temp = *(p+i);*(p+i)=*(p+j);*(p+j)=temp; temp = pi;pi=pj; pj=temp; void main( ) int i, a6=3,7,9,2,0,6; cout 原原 数数 组组: ; for(i=0;i6;i+) cout ai ; cout endl; invert(a,6); cout 反置后数组反置后数组: ; for(i=0;i6;i+) cout ai ; cout endl;/* 程序运行结果程序运行结果 *

28、原原 数数 组组: 3 7 9 2 0 6反置后数组反置后数组: 6 0 2 9 7 3* 程序结束程序结束 */数组的元素是指针型数组的元素是指针型例:例:Location *pa2;/由由pa0,pa1两个指针组成两个指针组成 #include void main( ) int line1 =1,0,0; /声明数组声明数组,矩阵的第一行矩阵的第一行int line2 =0,1,0; /声明数组声明数组,矩阵的第二行矩阵的第二行int line3 =0,0,1; /声明数组声明数组,矩阵的第三行矩阵的第三行int *p_line3;/声明整型指针数组声明整型指针数组p_line0=line

29、1;/初始化指针数组元素初始化指针数组元素p_line1=line2;p_line2=line3;coutMatrix test:endl;for(int i=0;i3;i+)for( int j = 0 ; j 3 ; j + ) cout p_lineij ; coutendl;/* 程序运行结果程序运行结果 *Matrix test:1 0 00 1 00 0 1* 程序结束程序结束 */指向常量的指针指向常量的指针 不能通过指针来改变所指对象的值,但指针本不能通过指针来改变所指对象的值,但指针本身可以改变,可以指向另外的对象。身可以改变,可以指向另外的对象。例:例: const cha

30、r *name1 = John; 若定义指针常量,则指针本身的值不能被改变。若定义指针常量,则指针本身的值不能被改变。例:例: char *const name2 = John; #include int main() int *pt_int; float *pt_float; int pig = 7, dog = 27; float x = 1.2345, y = 32.14; void *general; pt_int = &pig; *pt_int += dog; cout Pig now has the value of *pt_int n; general = pt_int;

31、 /指向指向int型的指针赋值给型的指针赋值给void型指针型指针 pt_float = &x; y += 5 * (*pt_float); cout y now has the value of y n; general = pt_float; /指向指向float型的指针赋值给型的指针赋值给void型指针型指针 const char *name1 = John; /指向常量的指针指向常量的指针,所指对象之值不能改变所指对象之值不能改变 char *const name2 = John; /常量指针常量指针,指针本身不能被改变指针本身不能被改变 return 0;/* 程序运行结果程

32、序运行结果 *Pig now has the value of 34y now has the value of 38.3125* 程序结束程序结束 */#includeconst int N=6;void print(const int *p,int n);void main() int arrayN; for(int i=0;iarrayi; print(array,N); void print(const int *p, int n) cout*p; for(int i=1;in;i+) cout.*(p+i); coutendl;/* 程序运行结果程序运行结果 *11 22 33 44

33、 55 6611.22.33.44.55.66* 程序结束程序结束 */定义形式定义形式类名类名 * 对象指针名;对象指针名;例例Location A(5,10);Location *ptr;ptr=&A;通过指针访问对象成员通过指针访问对象成员#include class Location public: Location(int xx = 0 , int yy = 0) X = xx ; Y = yy ; void PrintObjectAddress() cout this = this Move(0,0); void Move(int x, int y) this-X = x;

34、 (*this).Y = y; int GetX() return X; int GetY() return Y;private: int X,Y;void main() Location A(5,8); Location *ptr; ptr = &A; cout A.X = GetX() endl; cout A.Y = (*ptr).GetY() endl; A.PrintObjectAddress(); cout &A = &A endl; cout A.X = GetX() endl; cout A.Y = (*ptr).GetY() endl;/* 程序运行结

35、果程序运行结果 *A.X = 5A.Y = 8this = 0 x0012FF6C &A = 0 x0012FF6CA.X = 0A.Y = 0* 程序结束程序结束 */void *malloc( size );参数size:欲分配的字节数返回值: 成功,则返回void型指针。 失败,则返回空指针。头文件: 和 void free( void *memblock );参数memblock: 指针,指向需释放的 内存。返回值:无头文件: 和 new 类型名类型名T(初值列表)初值列表)功能:在程序执行期间,申请用于存放功能:在程序执行期间,申请用于存放T类型对象类型对象的内存空间,并依初

36、值列表赋以初值。的内存空间,并依初值列表赋以初值。结果值:成功:结果值:成功:T类型的指针,指向新分配的内存。类型的指针,指向新分配的内存。失败:失败:0(NULL) delete 指针指针P功能:释放指针功能:释放指针P所指向的内存。所指向的内存。P必须是必须是new操作操作的返回值。的返回值。 / using the new operator#include void main() int * pi = new int; *pi = 1001; cout int value = *pi : location = pi n; cout size of pi = sizeof pi; cout

37、 : size of *pi = sizeof *pi n; delete pi; double * pd = new double; *pd = 10000001.0; cout double value = *pd : location = pd n; cout size of pd = sizeof pd; cout : size of *pd = sizeof *pd n; delete pd;/* 程序运行结果程序运行结果 *int value = 1001: location = 0 x00440040size of pi = 4: size of *pi = 4double va

38、lue = 1e+007: location = 0 x00440030size of pd = 4: size of *pd = 8* 程序结束程序结束 */ using the new operator for arrays#include void main() double * p = new double 3; p0 = 0.2; / p如同一个数组名如同一个数组名 p1 = 0.5; p2 = 0.8; cout p1 is p1 .n; p = p + 1; / p毕竟是一个指针毕竟是一个指针 cout Now p0 is p0 and ; cout p1 is p1 .n; p

39、 = p - 1; delete p;/* 程序运行结果程序运行结果 *p1 is 0.5.Now p0 is 0.5 and p1 is 0.8.* 程序结束程序结束 */ a function returning a pointer to char#include char * buildstr(char c, int n); void main() int times; char ch; cout ch; cout times; char *ps = buildstr(ch, times); cout ps n; delete ps; ps = buildstr(#, 5); cout

40、ps -DONE- ps 0) pstrn = c; return pstr;/ /* * * * * * * 程序运行结果程序运行结果 * * * * * * *Enter a character: tEnter a character: tEnter an integer: 3Enter an integer: 3tttttt#-DONE-#-DONE-#* * * * * * * * * 程序结束程序结束 * * * * * * * * */ /动态分配数组时应注意:动态分配数组时应注意:用用new创建多维数组:创建多维数组:new 类型名类型名T下标表达式下标表达式1下标表达式下标表达

41、式2;如果内存申请成功,如果内存申请成功,new运算返回一个指向新分配运算返回一个指向新分配内存首地址的指针,是一个内存首地址的指针,是一个T类型的数组,数组元类型的数组,数组元素的个数为除最左边一维外各位下标表达式的乘积。素的个数为除最左边一维外各位下标表达式的乘积。fpfp+1fp00fp01fp02fp10fp11fp12例如:例如:char (*fp)3;fp = new char23;#include void get(double*&,int&);void print(double*,int);void main() double * a; int n; get(a

42、,n); print(a,n); delete a; get(a,n); print(a,n); delete a; void get(double*& a, int& n) cout n; a = new doublen; cout 请输入请输入 n 个实型数个实型数:n; for (int i = 0; i ai;void print(double* a, int n) for (int i = 0; i n; i+) cout ai ; cout endl;/* 程序运行结果程序运行结果 *请输入需要数据的个数请输入需要数据的个数: 3请输入请输入3个实型数个实型数:2

43、5 82 5 8请输入需要数据的个数请输入需要数据的个数: 5请输入请输入5个实型数个实型数:1.1 2.2 3.3 4.4 5.51.1 2.2 3.3 4.4 5.5* 程序结束程序结束 */#include class Locationpublic: Location() X = 0; Y = 0; cout 缺省构造函数缺省构造函数. endl; Location(int xx , int yy)X = xx;Y = yy; cout 构造函数构造函数. endl; Location( )cout 析构函数析构函数. endl; void Location:Move(int x, in

44、t y)X = x;Y = y;private: int X,Y;void main( ) coutStep One:endl; Location *Ptr = new Location; delete Ptr; coutStep Two:endl; Ptr = new Location(1,2); delete Ptr; Ptr=new Location2; Ptr0.Move(5,10); Ptr1.Move(15,20); coutDeleting.endl; delete Ptr;/* 程序运行结果程序运行结果 *Step One:缺省构造函数缺省构造函数.析构函数析构函数.Step

45、Two:构造函数构造函数.析构函数析构函数.缺省构造函数缺省构造函数.缺省构造函数缺省构造函数.Deleting.析构函数析构函数.析构函数析构函数.* 程序结束程序结束 */当函数的返回值是地址时,该函数就是指针形当函数的返回值是地址时,该函数就是指针形函数。函数。定义形式定义形式 存储类型存储类型 数据类型数据类型 *函数名函数名() / a function returning a pointer to char#include char * buildstr(char c, int n); void main() int times; char ch; cout ch; cout ti

46、mes; char *ps = buildstr(ch, times); cout ps n; delete ps; ps = buildstr(#, 5); cout ps -DONE- ps 0) pstrn = c; return pstr;/ /* * * * * * * 程序运行结果程序运行结果 * * * * * * *Enter a character: tEnter a character: tEnter an integer: 3Enter an integer: 3tttttt#-DONE-#-DONE-#* * * * * * * * * 程序结束程序结束 * * * *

47、 * * * * */ /定义形式定义形式 存储类型存储类型 数据类型数据类型 (*函数指针名函数指针名)();含义:含义: 数据指针指向数据存储区,而函数指针指向的数据指针指向数据存储区,而函数指针指向的是程序代码存储区。是程序代码存储区。/ 指向函数的指针指向函数的指针#include double zhang(int lns) return 0.02 * lns;double li(int lns)return 0.01 * lns + 0.0002 * lns * lns;void estimate(int lines, double (*pf)(int);void main() in

48、t code; cout code; cout 小张估计小张估计: ; estimate(code, zhang); cout 小李估计小李估计: ; estimate(code, li);void estimate(int lines, double (*pf)(int) cout lines 行代码需花费行代码需花费 (*pf)(lines) 小时小时.n;/* 程序运行结果程序运行结果 *请输入大约需要编写多少行代码请输入大约需要编写多少行代码: 350小张估计小张估计: 350 行代码需花费行代码需花费 7 小时小时.小李估计小李估计: 350 行代码需花费行代码需花费 28 小时小时

49、.* 程序结束程序结束 */字符数组的定义和引用字符数组的定义和引用例:例:static char str8=112,114,111,103,114,97,109,0;static char str8=p,r,o,g,r,a,m,0;static char str8=program;static char str =program;字符串字符串 字符串常量,例如:字符串常量,例如:china 没有字符串变量,用字符数组来存放字符串没有字符串变量,用字符数组来存放字符串 字符串以字符串以0为结束标志为结束标志 注意字符数组的初始化形式注意字符数组的初始化形式#includeint main()

50、static char c10=I, ,a,m, ,a, ,b,o,y; int i; for( i = 0 ; i 10 ; i + ) cout ci; cout endl; return 0;运行结果: I am a boy#includeint main()static char diamond 5= , , * , , * , , * , * , , , , * , , * , , * , , , * ;int i,j;for ( i = 0 ; i 5 ; i + )for( j = 0 ; j 5 ; j + )cout diamondij;cout p1;/错误错误 p1=ab

51、c;/正确正确 p2=a; cin *p2; /正确正确方法方法逐个字符输入输出逐个字符输入输出将整个字符串一次输入或输出将整个字符串一次输入或输出例:例:char c =China; cout str1 str2 str3; 运行时输入数据:运行时输入数据: How are you?内存中变量状态如下:内存中变量状态如下: str1: H o w 0 str2: a r e 0 str3: y o u ? 0内存中变量状态如下: str1: H o w 0 str2: a r e 0 str3: y o u ? 0若改为:若改为: static char str13; cin str; 运行

52、时输入数据:运行时输入数据: How are you?内存中变量 str 内容如下: str: H o w 0 cin.getline(字符数组名字符数组名St, 字符个数字符个数N, 结束符结束符);功能:功能: 一次连续读入多个字符(可以包括空格),直一次连续读入多个字符(可以包括空格),直到读满到读满N个,或遇到指定的结束符(缺省为个,或遇到指定的结束符(缺省为n)。)。读入的字符串存放于字符数组读入的字符串存放于字符数组St中。中。 cin.get(字符数组名字符数组名St, 字符个数字符个数N, 结束符结束符);功能:功能: 一次连续读入多个字符(可以包括空格),直一次连续读入多个字符(可以包括空格),直到读满到读满N个,或遇到指定的结束符(缺省为个,或遇到指定的结束符(缺省为n)。)。 读入的字符串

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论