实验11 指针(1)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验11 指针(1)
一、实验目的:
1、通过查看变量地址,了解不同类型数据在内存存储情况;理解用指针获取内存数据的两个关键点:首地址、数据类型(决定占用的存储单元的个数、数据存储方式);
2、掌握指针变量的定义方法、=(赋值)、&(取地址)、*(取内容,间接访问);
3、能够用指针变量作函数参数,实现通过函数调用得到n个要改变的值:
4、掌握指针变量p的算术运算:p±n(n为整数)、p++(p--)、++p(--p),理解移动一个数据单位的真实含义;
5、能够用数组名或指针变量作函数形参,在函数中实现对数据的批量处理。
二、实验内容
1、(基础题)根据注释填写程序所缺代码,然后运行程序,并回答相关问题:
#include
int main()
{
char ch1='I',ch2='Q';
int n1=1, n2=6;
double d1=1.25,d2=20.5;
//定义两个指针变量pch_1、pch_2分别指向ch1、ch2
___________(1)____________
//定义两个指针变量pn_1、pn_2分别指向n1、n2
___________(2)____________
//定义两个指针变量pd_1、pd_2分别指向d1、d2
___________(3)____________
//分别输出上述ch1、ch2、n1、n2、d1、d2六个变量的地址(即六个指针变量的值) ___ ________(4)__ _________
___ ________(5)__ _________
___ ________(6)__ _________
//用间接存取方式输出ch1、ch2、n1、n2、d1、d2六个变量的值
___ ________(7)__ _________
___ ________(8)__ _________
___ ________(9)__ _________
//用间接存取方式修改六个变量的值:char型大写变小写,int型减5,double型加10.0
___ ________(10)__ _________
___ ________(11)__ _________
___ ________(12)__ _________
//再次用间接存取方式输出ch1、ch2、n1、n2、d1、d2六个变量的新值
___ ________(13)__ _________
___ ________(14)__ _________
___ ________(15)__ _________
return 0;
}
2、(基础题)使用指针编程实现:输入3个正整数,按由小到大顺序输出。程序运行结果如下所示:
(提示:可以调用swap(int * x, int * y)来实现)
3、(基础题)请编写程序:函数fun()的功能是:对传送过来的三个浮点数选出最大值和最小值,其中三个形参传递操作数,另外两个形参传送回计算得到最大值、最小值。在main()函数中通过键盘输入的形式得到三个实参的值,然后调用fun 函数。运行界面如下:
4、(基础题)编程实现:在主函数中定义一个有10个元素的float数组,并赋值。该程序还包含两个函数:
(1)void change(float *x,int k)的功能是让该数组中的前k个元素值为0;
(2)void print(float *x,int n)的功能是输出该数组中的所有元素;
请在主函数中分别调用这两个函数,验证是否实现所要求功能。