《06 第六章 复合数据类型》由会员分享,可在线阅读,更多相关《06 第六章 复合数据类型(49页珍藏版)》请在金锄头文库上搜索。
1、第六章复合数据类型,指针的声明与使用 数组的声明与使用 指针与数组的相互引用 字符串及相关库函数 new与delete 按引用调用的参数传递方式 将函数作为参数 将数组作为参数,6.1 变量的地址,变量在内存中占用的存储空间的首地址称为变量的地址例:int x=0x1234;则 x 的地址为2000H,2000H,x,变量x以两种方式被使用,左值:变量的地址部分右值:变量的值部分例:x = x + 1 左值 右值如果一表达式的求值结果被指派了一个变量,则该表达式可做左值,否则只能做右值例:(1) (ij)?i:j做左值: (ij)?i:j = 10 ;做右值:k = (iij;swap( i,
2、 j);coutiij;执行swap,交换的是p1、 p2所指int *pi, *pj; 向的内容pi = ,10,20,&i,&j,&i,&j,void swap(int *p1, int *p2)int *p;程序执行:p = p1 ; i jp1 = p2 ;p2 = p; 实参pi pj 形参p1 p2则交换的是形参p1、p2中存放的地址值,无法交换i、j的值,失败3、引用做函数返回值int ,10,20,&i,&j,&i,&j,6.3 数组类型,数组:是一组具有相同名字,不同下标的数据的有序集合数组中每一个数据称为数组元素一、一维数组的声明一般形式:数组元素类型 数组名常量表达式;常
3、量表达式表示数组长度,即数组元素的个数,只能是整数常量,不能包含任何变量例:int n;cinn;int an;错误,不能这样用,数组经定义后,系统为它分配一段连续的存储空间,在此空间内,数组元素依次连续存放。 存储空间大小=常量表达式的值*sizeof(数组元素类型)例:int a5; 共分配 5*sizeof(int) = 10个字节的存储空间 2000H数组名表示该数组的第一个元素的首地址a ,二、一维数组的使用与初始化,1、使用数组不能以整体形式参加数据处理,只能逐个使用数组元素:数组名下标C+中,数组下标由0开始例:int a10;表示数组a有10个元素,分别是a0a9,2、初始化,
4、给所有元素赋初值int a10 = 10,11,12,13,14,15,16,17,18,19; / 则a0的值为10,a9的值为19此时,可以在声明时省略数组长度int a = 10,11,12,13,14,15,16,17,18,19;只给前面部分元素赋初值int a10 = 10,11,12; / 则a0的值为10,a1的值为11, a2的值为12, a3至a9没有显式赋初值,三、数组作为函数的参数,int fun(int a); int fun(int *a);void main( )int b10;fun(b);数组做函数形式参数时,传递的是数组的首地址,因此在形参声明时,不必指定数
5、组长度,例1:,void bubble(int data, int length)int segment;/ 循环扫描数组的下标变量int loop;/ 循环扫描部分数组的下标变量int temp;/ 用于交换数据时作缓冲的临时变量/ 将数组分段,逐段将数据冒泡排序for (segment = 0; segment = segment; loop = loop - 1) if (dataloop + 1 dataloop;/ 对数据排序bubble(data, max_nums);/ 将排序后的数据输出cout After sorting:n;for (loop = 0; loop = max
6、_nums - 1; loop = loop + 1) cout No. loop + 1 : dataloop arrayk; / 当数组用int *ptr ;ptr = array; / ptr = 若指针ptr已指向数组中的一个元素,则ptr+1指向同一数组中的下一个元素,cinarray+k;/ 当指针用,*(array+k),arrayk,pk,指针与数组的区别,指针是地址变量,所存放的地址可随意修改数组名是地址常量,一经定义,其所指向的地址不可更改for (k=0; k5; k+)cout *(ptr+) “ ” ; (1) *ptr (2)ptr = ptr+1第一次循环 取a0
7、的值,然后ptr指向a1但不能修改为: cout *(array+) “ ” ; (1) *array (2)array=array+1(*array)+ 则正确,array0+;,六、指针数组与数组指针,指针数组:基类型为指针的数组int *a5; a数组指针:基类型为数组的指针int (*b)5; int array5;b = array;,6.4 字符串 一、字符串,字符串:由字符组成,以0(字符串结束符,其ASCII码值为0) 结束。例:“China”存储组织为:字符串长度:所有字符的个数(不包括结束符)。字符串的初始化例:char str = “I am happy” ; /字符串长度10,数组长度11char str = “I am happy” ; char str1 = I, , a, m, , h, a, p, p, y; /数组长度10,