Removed_实验七 指针与引用23
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验七 指针与引用
一、实验目的和要求
1. 掌握指针、指针变量、指针常量的基本概念;
2. 掌握指针与数组、指针与函数的关系及应用。
3. 初步掌握引用的概念及简单应用。
二.相关知识点
1.指针变量的定义,由数据类型后跟星号,再跟指针变量名
组成。
2.引用值是引自所指向的实体。
3.指针与数组都可以作为参数。
三.实验内容
int * findmax(int * array, int size, int * index) { int i,max; int *p; p=array;
______2__4_1______3___2_1_“_”__________________4__2__40__12_“_”0__12__03__“2_•_”042_“_0•__”83__“0_”_0_7_1__3—2__0__—1__45__80_1_42__84__42“__”5源自文库_l“_”4_0_“3”_0_5_0_28“_”01“_”07_“9”0_“0”2“2”•30”“0”“”093124820302130
void findmax(int* a, int n, int i, int * pk); void main ( ) {
int a[size]; int n = 0; cout << "请输入" << size << "个数据:"; for(int i=0; i< size; i++)
cin >> a[i]; findmax(a, size,0, &n); cout <<"最大值为:" << a[n] << endl
<<"其下标为:" << n << endl; } void findmax(int * a, int n, int i, int * pk) {
if(i<n) {
if(a[i] >a[*pk]) *pk= i;
findmax(a,n,i+1,&(*pk)); } }
1.思路分析: 2.编程如下:
# include < iostream.h> const size= 10; //void findmax(int* a, int n, int i, int * pk); void findmax(int *a,int n,int i,int &pk); void main ( ) {
max=*array; for(i=0;i<size;i++) if(*(array+i)>max) { max=*(array+i);
p=array+i; *index=i; } return p; } }
3. 实验结果:
}
2.读下列程序, 将其改写为传递引用参数; 将 findmax()函数改写成非递归函数(重新考虑参数个数)。 # include < iostream.h> const size= 10;
int a[size]; int n=0; cout << "请输入" << size << "个数据:"; for(int i=0; i< size; i++)
cin >> a[i]; // findmax(a, size,0, &n); findmax(a,size,0,n);
cout <<"最大值为:" << a[n] << endl <<"其下标为:" << n << endl;
______2__4_1______3___2_1_“_”__________________4__2__40__12_“_”0__12__03__“2_•_”042_“_0•__”83__“0_”_0_7_1__3—2__0__—1__45__80_1_42__84__42“__”56_l“_”4_0_“3”_0_5_0_28“_”01“_”07_“9”0_“0”2“2”•30”“0”“”093124820302130
} /*void findmax(int * a, int n, int i, int * pk) {
if(i<n) {
if(a[i] >a[*pk]) *pk= i;
findmax(a,n,i+1,&(*pk)); } }*/
void findmax(int *a,int n,int i,int &pk) {
for(;i<n;i++) if(a[i]>a[pk])
pk=i; }
3.实验结果
______2__4_1______3___2_1_“_”__________________4__2__40__12_“_”0__12__03__“2_•_”042_“_0•__”83__“0_”_0_7_1__3—2__0__—1__45__80_1_42__84__42“__”56_l“_”4_0_“3”_0_5_0_28“_”01“_”07_“9”0_“0”2“2”•30”“0”“”093124820302130
______2__4_1______3___2_1_“_”__________________4__2__40__12__“0_”_12__03__“2__•042_”_“0__•83”__“0__”0_7_1_—_32__—0__1__45__80_1_42__84__42__“56_”_“l4_0_”“3_0_”5_0_28_“01”_“07”_“90_”“02”2“”•30”0“”“09”3124820302130
1.题目:下面的程序中,调用了 findmax()函数,该函数寻找数组
中的最大元素,将该元素的下标通过参数返回,并返回其地址值,编程实现 findmax()函数。 1. 思路分析:
2. 编程如下:
# include < iostream.h > int * findmax(int * array, int size, int * index); void main ( ) { int a[10] = {33,91,54,67,82,37,85,63,19,68}; int * maxaddr; int idx; maxaddr = findmax(a, sizeof(a)/sizeof( * a), &idx); cout<<idx<<endl<<maxaddr << endl<<a[idx] << endl; }
一、实验目的和要求
1. 掌握指针、指针变量、指针常量的基本概念;
2. 掌握指针与数组、指针与函数的关系及应用。
3. 初步掌握引用的概念及简单应用。
二.相关知识点
1.指针变量的定义,由数据类型后跟星号,再跟指针变量名
组成。
2.引用值是引自所指向的实体。
3.指针与数组都可以作为参数。
三.实验内容
int * findmax(int * array, int size, int * index) { int i,max; int *p; p=array;
______2__4_1______3___2_1_“_”__________________4__2__40__12_“_”0__12__03__“2_•_”042_“_0•__”83__“0_”_0_7_1__3—2__0__—1__45__80_1_42__84__42“__”5源自文库_l“_”4_0_“3”_0_5_0_28“_”01“_”07_“9”0_“0”2“2”•30”“0”“”093124820302130
void findmax(int* a, int n, int i, int * pk); void main ( ) {
int a[size]; int n = 0; cout << "请输入" << size << "个数据:"; for(int i=0; i< size; i++)
cin >> a[i]; findmax(a, size,0, &n); cout <<"最大值为:" << a[n] << endl
<<"其下标为:" << n << endl; } void findmax(int * a, int n, int i, int * pk) {
if(i<n) {
if(a[i] >a[*pk]) *pk= i;
findmax(a,n,i+1,&(*pk)); } }
1.思路分析: 2.编程如下:
# include < iostream.h> const size= 10; //void findmax(int* a, int n, int i, int * pk); void findmax(int *a,int n,int i,int &pk); void main ( ) {
max=*array; for(i=0;i<size;i++) if(*(array+i)>max) { max=*(array+i);
p=array+i; *index=i; } return p; } }
3. 实验结果:
}
2.读下列程序, 将其改写为传递引用参数; 将 findmax()函数改写成非递归函数(重新考虑参数个数)。 # include < iostream.h> const size= 10;
int a[size]; int n=0; cout << "请输入" << size << "个数据:"; for(int i=0; i< size; i++)
cin >> a[i]; // findmax(a, size,0, &n); findmax(a,size,0,n);
cout <<"最大值为:" << a[n] << endl <<"其下标为:" << n << endl;
______2__4_1______3___2_1_“_”__________________4__2__40__12_“_”0__12__03__“2_•_”042_“_0•__”83__“0_”_0_7_1__3—2__0__—1__45__80_1_42__84__42“__”56_l“_”4_0_“3”_0_5_0_28“_”01“_”07_“9”0_“0”2“2”•30”“0”“”093124820302130
} /*void findmax(int * a, int n, int i, int * pk) {
if(i<n) {
if(a[i] >a[*pk]) *pk= i;
findmax(a,n,i+1,&(*pk)); } }*/
void findmax(int *a,int n,int i,int &pk) {
for(;i<n;i++) if(a[i]>a[pk])
pk=i; }
3.实验结果
______2__4_1______3___2_1_“_”__________________4__2__40__12_“_”0__12__03__“2_•_”042_“_0•__”83__“0_”_0_7_1__3—2__0__—1__45__80_1_42__84__42“__”56_l“_”4_0_“3”_0_5_0_28“_”01“_”07_“9”0_“0”2“2”•30”“0”“”093124820302130
______2__4_1______3___2_1_“_”__________________4__2__40__12__“0_”_12__03__“2__•042_”_“0__•83”__“0__”0_7_1_—_32__—0__1__45__80_1_42__84__42__“56_”_“l4_0_”“3_0_”5_0_28_“01”_“07”_“90_”“02”2“”•30”0“”“09”3124820302130
1.题目:下面的程序中,调用了 findmax()函数,该函数寻找数组
中的最大元素,将该元素的下标通过参数返回,并返回其地址值,编程实现 findmax()函数。 1. 思路分析:
2. 编程如下:
# include < iostream.h > int * findmax(int * array, int size, int * index); void main ( ) { int a[10] = {33,91,54,67,82,37,85,63,19,68}; int * maxaddr; int idx; maxaddr = findmax(a, sizeof(a)/sizeof( * a), &idx); cout<<idx<<endl<<maxaddr << endl<<a[idx] << endl; }