c++指针,引用和结构体
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验5
实验5:指针、引用和结构体
要求:
⑴掌握指针、指针变量、指针常量的基本概念;
⑵掌握指针与数组、指针与函数的关系及应用。
⑶初步掌握引用的概念及简单应用。
第一部分教程练习:
1.上机实验题一
观察程序运行结果,学习指针的基本运算。
⑴分析
变量和数组元素的地址都可以赋给一个指针,一个指针可以加上或减去一个整数;在两个指针指向同一数组不同元素时,可以进行减运算,结果为其间的数组元素个数。
一个完整的参考程序如下:
#include
void main()
{
int i,a[10];
int *p1,*p2;
p1=a; //A
p2=p1+5;
for (i=0;i<=9;i++) {
a[i]=i*i;
cout<<"a["<
}
cout<<"a="< cout<<"p1="< cout<<"p2-p1="< cout<<"*p2-*p1="<<*p2-*p1< } 实验5 ⑵上机要求 将程序中A行改为“p1=&a[0]”观察程序运行结果。 将程序中B行改为“cout<<"*a="<<*a< 面向对象上机 将程序中C行改为“cout<<"a[5]-a[0]="<< a[5]-a[0]< (3)对以上结果写出实验分析: 将程序中A行改为“p1=&a[0]”,结果不变,因为“a”和“&a[0]”都表示数组的首地址。将程序中B行改为“cout<<"*a="<<*a< ⒉上机实验题二 指出下列程序的错误。 #include void exchange(int,int); void main() 实验5 { cout<<"Input two data seprated by space:"; int a,b; cin>>a>>b; cout<<"Before Exchange:a="< exchange(a,b); cout<<"After Exchange:a="< } void exchange(int x,int y) { int t; t=x;x=y;y=t; } ⑴分析 本例的目的是在子函数中交换的两个变量的值,在主函数中使用。但函数的数据传值调用方式是将实参的数据值传递给形参,实参和形参在内存中占用不同的地址单元,改变形参值不改变实参值。要想通过改变形参的值而改变实参的值,则应使用指针调用或引用调用。而且引用调用大有取代指针调用之势。 使用指针调用如下: #include void exchange(int*,int*); void main() { cout<<"Input two data seprated by space:"; int a,b,*p1=&a,*p2=&b; cin>>a>>b; cout<<"Before Exchange:a="< exchange(p1,p2); cout<<"After Exchange:a="< } void exchange(int *x,int *y) { int t; t=*x;*x=*y;*y=t; } 使用引用调用如下(待讲完引用再做): #include void exchange(int&,int&); 面向对象上机 void main() { cout<<"Input two data seprated by space:"; int a,b; cin>>a>>b; cout<<"Before Exchange:a="< exchange(a,b);