资源预览内容
第1页 / 共42页
第2页 / 共42页
第3页 / 共42页
第4页 / 共42页
第5页 / 共42页
第6页 / 共42页
第7页 / 共42页
第8页 / 共42页
第9页 / 共42页
第10页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第6章 数组和指针教学内容 6.1数组6.2 指针6.3 指针与数组6.4 指针与函数6.5指针数组和指向指针的指针6.6字符串16.1数组组数组的定义与引用数组是一组具有同一数据类 型、有序数据的集合。要寻 找一个数组中的某一个元素 必须给出两个要素,即数组 名和下标。数组名和下标唯 一地标识一个数组中的一个 元素。 一个数组在内存中占一片连 续的存储单元。如果有一个 整型数组a,假设数组的起始 地址为2000,则该数组在内 存中的存储情况如图所示。26.1数组组数组的初始化数组的初始化就是在定义数组时给部分或全 部元素赋初值。对于简单数据类型的数组,就 是给数组元素赋值;对于对象数组,每个元素 都是某个类的一个对象,初始化就是调用该对 象的构造函数。关于对象数组,我们会在后面 单独作详细介绍。定义数组时可以给出数组元 素的初值。例如:int a3 = 1, 1, 1;表示定义 了一个有3个元素的整型数组,数组的元素a0 、a1、a2的值都是1。对于将全部元素都初 始化的情况,可以不用说明元素个数。36.1数组组向函数传递数组1传递给标准库函数C+中有一个memset()函数,它可以一字节一 字节地把数组设置为一个指定的值。memset()函 数在mem.h头文件中声明,它把数组的起始地址 作为第一个参数,第二个参数是设置数组每个字 节的值,第三个参数是数组的长度(字节数,不 是元素个数)。其函数原型为:返回目录46.1数组组向函数传递数组例如,下面的代码用数组做参数传递给标准函数 memset(),以让其将数组设置成全0:#include void main() int ia150; int ia2500; memset(ia1, 0, 50*sizeof(int); memset(ia2, 0, 500*sizeof(int); 返回目录56.1数组组向函数传递数组2传递给自定义函数 若要让一个函数求数组元素的和,需传递一个数 组参数和一个数组大小参数,因为从传递的数组 参数(地址)中,没有数组大小的信息。例如,下面的程序调用一个函数求数组元素之和 :66.1数组组向函数传递数组返回目录#include int sum0(int , int); void main() static int ia5 = 2, 3, 6, 8, 10; int sum; sum = sum0(ia, 5); cout void main() int *p_max, *p_min, *p, a, b; /*定义指针变量p_max和 p_min*/ coutab; p_max = p_min = /*若a小于b则需交换指针p_max和p_min所指向的变量*/ if (a ab; p_max = p_min = /*若a比b小则需交换指针p_max和p_min所指向的变量*/ if (a int sum1, sum2, sum3, sum4, sum5; /存放每种方法的结果 int iArray = 1, 4, 2, 7, 13, 32, 21, 48, 16, 30; int *iPtr; void main() int size, n; size = sizeof(iArray)/sizeof(*iArray); /元素个数 for(n = 0; n void main( ) int a5,b5,c5; int *p; int i; coutai; cout*(b+i); p=b;cout(*p); cout void main( ) int a34; int *p; cout*p; cout void main( ) int a34; int i,j; /*用i表示行标,j表示列标*/ for(i=0;i*(*(a+i)+j); for(i=0;i void main( ) int a34; int (*p)4; int j; cout*(*p+j); cout void main() int a2=3,5, b2=3,5, c2=3,5; swap1(a0, a1); swap2(b); (V) swap3( coutbj) min=j; if(min!=i) temp=bmin; bmin=bi; bi=temp; void main() int a10;int *p;cout*p;p=a; /*该语句不可省略*/sort(p,10);cout #define N 4 void averpro(float *p,int m) int i; float sum=0,aver; for(i=0;i void splitfloat(float x, int *intpart, float *flacpart) /形参intpart, fracpart是指针 *intpart = int(x);/取x的整数部分 *flacpart = x - *intpart;/取x的小数部分 void main() int i, n; float x, f; cout x; splitfloat(x, /变量地址作为实参 cout void print_stuff(float data_to_ignore); void print_message(float list_this_data); void print_float(float data_to_print); void (*function_pointer)(float);/void类型的函数指针 int main()/主函数 float pi = 3.14159; float two_pi = 2.0*pi; print_stuff(pi); function_pointer = print_stuff; /函数指针指向print_stuff function_pointer(pi); /函数指针调用 function_pointer = print_message;/函数指针指向print_message function_pointer(two_pi);/函数指针调用 function_pointer(13.0);/函数指针调用 function_pointer = print_float;/函数指针指向print_float function_pointer(pi);/函数指针调用 print_float(pi); return 0; void print_stuff(float data_to_ignore) cout #include void main( ) char string =“Hello, world!“; cout #include void main( ) char *string=“Hello, world!“; coutnamej Y Nmin=jmin!=i Y N互换namei 与namemin图 主函数N-S 图定义并初始化指针数组输出排序后各字符串40#include #include void main( ) char *name=“Zhang San“,“Li Si“,“Wang Wu“,“Feng Liu“; int i,j,min; char *temp; for(i=0;i0) min=j; if(min!=i) temp=namei;namei=namemin;namemin=temp;cout #include #define M 3 #define N 2 void main() int snoM=0,sscMN=0; char snameM6,pnaN6; int ssumM=0,sperM; int p3=ssum0; input(sno,aversco( count( print(sno,sname,pna,ssc, 42
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号