- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
c指针,引用和结构体分析
实验
掌握指针与数组、指针与函数的关系及应用。
初步掌握引用的概念及简单应用。
第一部分 教程练习:
1.上机实验题一
观察程序运行结果,学习指针的基本运算。
⑴分析
变量和数组元素的地址都可以赋给一个指针,一个指针可以加上或减去一个整数;在两个指针指向同一数组不同元素时,可以进行减运算,结果为其间的数组元素个数。
一个完整的参考程序如下:
#includeiostream.h
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;
couta[i]=a[i]endl;
}
couta=aendl; //B
coutp1=p1,p2=p2endl;
coutp2-p1=p2-p1endl;
cout*p2-*p1=*p2-*p1endl; //C
}
⑵上机要求
将程序中A行改为“p1=a[0]”观察程序运行结果。
将程序中B行改为“cout*a=*aendl;”观察程序运行结果。
将程序中C行改为“couta[5]-a[0]= a[5]-a[0]endl;”观察程序运行结果。
(3)对以上结果写出实验分析:
将程序中A行改为“p1=a[0]”,结果不变,因为“a”和“a[0]”都表示数组的首地址。将程序中B行改为“cout*a=*aendl;”a是a[0]的地址,*a是元素a[0]的值,即为0。将程序中C行改为“couta[5]-a[0]= a[5]-a[0]endl;”因为a[0]和*p1等价,a[5]和*p2等价,故结果不变。
⒉上机实验题二
指出下列程序的错误。
#include iostream.h
void exchange(int,int);
void main()
{
coutInput two data seprated by space:;
int a,b;
cinab;
coutBefore Exchange:a=a,b=bendl;
exchange(a,b);
coutAfter Exchange:a=a,b=bendl;
}
void exchange(int x,int y)
{
int t;
t=x;x=y;y=t;
}
⑴分析
本例的目的是在子函数中交换的两个变量的值,在主函数中使用。但函数的数据传值调用方式是将实参的数据值传递给形参,实参和形参在内存中占用不同的地址单元,改变形参值不改变实参值。要想通过改变形参的值而改变实参的值,则应使用指针调用或引用调用。而且引用调用大有取代指针调用之势。
使用指针调用如下:
#include iostream.h
void exchange(int*,int*);
void main()
{
coutInput two data seprated by space:;
int a,b,*p1=a,*p2=b;
cinab;
coutBefore Exchange:a=a,b=bendl;
exchange(p1,p2);
coutAfter Exchange:a=a,b=bendl;
}
void exchange(int *x,int *y)
{
int t;
t=*x;*x=*y;*y=t;
}
使用引用调用如下(待讲完引用再做):
#include iostream.h
void exchange(int,int);
void main()
{
coutInput two data seprated by space:;
int a,b;
cinab;
coutBefore Exchange:a=a,b=bendl;
exchange(a,b);
coutAfter Exchange:a=a,b=bendl;
}
void exchange(int x,int y)
{
int t;
t=x;x=y;y=t;
}
⑵上机要求
分别输出三个程序中形参和输出变量的地址。
(3)写出实验分析及结果
第一种方法的形参,实参的地址不同,交换的只是指针指向,故不能实现实参的交换。,的是实参的值第三种,交换的也是实参的值。
自定义函数实现字符串的拷贝。
⑴分析
字符串不允许进行赋值运算,只能使用头文件string.h中定义的strcpy()库函数。本例要求自己编制一个自定义函数实现strcpy()库函数的功能。
一个完整的
您可能关注的文档
- BSX3201型整车装配调整验收规范分析.doc
- BSS呼叫流程与实际接口分析分析.ppt
- BSC指令图解分析.doc
- BT树脂PCB为什么贵分析.docx
- BTS结构及各模块面板图分析.doc
- BritishHolidaysandFestivals分析.ppt
- Britishhistory分析.ppt
- Burns英美文学分析.ppt
- Building_a_HA_and_DR_Solution_using_AlwaysON_SQL_FCIs_and_AGsv1分析.docx
- BusinessCard分析.ppt
- 第十一章 电流和电路专题特训二 实物图与电路图的互画 教学设计 2024-2025学年鲁科版物理九年级上册.docx
- 人教版七年级上册信息技术6.3加工音频素材 教学设计.docx
- 5.1自然地理环境的整体性 说课教案 (1).docx
- 4.1 夯实法治基础 教学设计-2023-2024学年统编版九年级道德与法治上册.docx
- 3.1 光的色彩 颜色 电子教案 2023-2024学年苏科版为了八年级上学期.docx
- 小学体育与健康 四年级下册健康教育 教案.docx
- 2024-2025学年初中数学九年级下册北京课改版(2024)教学设计合集.docx
- 2024-2025学年初中科学七年级下册浙教版(2024)教学设计合集.docx
- 2024-2025学年小学信息技术(信息科技)六年级下册浙摄影版(2013)教学设计合集.docx
- 2024-2025学年小学美术二年级下册人美版(常锐伦、欧京海)教学设计合集.docx
文档评论(0)