一、大纲
1. 理解指针与一维数组的关系,掌握它们的使用
2. 掌握指针作为函数参数的使用
二、实验目标:
1. 掌握使用指针访问一个数组的元素,以及通过指针与整数的运算,完成在数组元素间的移动。
2. 掌握指针变量和数组名的区别和关系,以及使用数组名进行元素的访问。
三、实验方式:
要求学生自己独立完成。
四、任务
4.1任务1:指针与数组(时间:30分钟)
4.1.1 任务描述
定义一个包含5个元素的double类型的数组salarys,初始值为:
(1) 使用for循环将数组中元素的值依次打印出来,中间用逗号隔开。
(2) 显示数组中第一个元素的地址。
(3) 显示整个数组的首地址。
(4) 显示数组中最后一个元素的地址。
(5) 使用数组名加索引值(数字)的方式显示数组中最后一个元素的地址。
(6) 定义一个double类型的指针head,让它指向数组salarys中的第一个元素。
(7) 定义一个double类型的指针tail,让它指向数组salarys中的最后一个元素。
(8) 分别显示指针变量head和tail的值。
(9) 分别显示指针变量head和tail所指向内容的值。
(10) 运用指针间的减法运算,显示指针tail与head做减法运算的结果。
(11) 通过指针head将数组中第一个元素的值减50,并显示运算后该元素的值。
(12) 将head通过与整数的加法运算,使其指向数组中的第三个元素。
(13) 通过指针head显示数组中第三个元素的值。
(14) 将head重新指向数组中的第一个元素,并使用指针head依次输出数组中的所有元素。
(15) 使用循环语句,通过指针tail按照倒序的格式输出数组中元素的值。
double salarys[5] = { 1500, 2000.43, 1202.78, 8000.32, 5000 };
int i = 0;
for (i = 0; i < 5; i++) {
printf("%6.2lf\n", salarys[i]);
}
int *p;
p = &salarys;
int *m;
m = &salarys[0];
printf("%x\n", p);
printf("%x\n", m);
int *n;
n = &salarys[4];
(1) printf("%x\n", n);
printf("%x\n",&salarys[4]);
double *head;
head= &salarys;
double *tail = &salarys[4];
printf("%x\n", head);
printf("%x\n", tail);
printf("%6.2lf\n", *head);
(2) printf("%6.2lf\n", *tail);
printf("%x\n", tail-head);
*head=salarys[0]-50;
printf("%6.2lf\n", *head);
printf("%6.2lf\n", *head+6550.32);
//head=salarys[3];
head=&salarys;
for(i=0;i<5;i++){
printf("%6.2lf\n",*(head+i));
}
(16)
4.1.2 任务目的
(1) 掌握数组的概念、定义、初始化、访问等操作。
(2) 掌握数组名的含义:指针常量、数组首地址、数组第一个元素的地址。
(3) 掌握指针与整数进行加减法运算的使用(在指针指向数组元素时,表现为指针在数组元素间的移动)。
(4) 掌握使用指针间接修改所指向变量的值。
(5) 掌握指针间做减法运算的作用:返回为指针间的元素个数。
4.1.3 任务要求
(1) 将每一条子任务有语句表示。添加注释信息表示是第几条子任务。</