C语言实验报告范文

时间:2024.3.19

计算机科学与技术系C语言实验报告

实验名称:指针及其应用日期: 得分: 指导老师: 专业: 班次: 姓名: 学号:

实验目的

(1) 掌握变量的指针及其基本用法。

(2) 掌握一维数组的指针及其基本用法。

(3) 掌握指针变量作为函数的参数时,参数的传递过程及其用法。

一. 实验内容

(1) 运行以下程序,并从中了解变量的指针和指针变量的概念。

(2) 运行以下程序,观察&a[0]、&a[i]和p的变化,然后回答以下问题:

1. 程序的功能是什么?

2. 在开始进入循环体之前,p指向谁?

3. 循环每增加一次,p的值(地址)增加多少?它指向谁?

4. 退出循环后,p指向谁?

5. 你是否初步掌握了通过指针变量引用数组元素的方法?

(3) 先分析以下程序的运行结果,然后上机验证,并通过此例掌握通过指针变量引用数组元素的各种方法。

(4) 编写函数,将n个数按原来的顺序的逆序排列(要求用指针实现),然后编写主函数完成:

① 输入10个数;

② 调用此函数进行重排;

③ 输出重排后的结果。

二. 分析与讨论

(1) 指针的定义方法,指针和变量的关系。

定义方法:

数据类型 *指针变量名;

如定义一个指向int型变量的指针——

int *p;

则我们可以继续写如下代码——

int a = 4;

p = &a;

printf("%d", *p);

在这里,我们定义了一个变量a,我们把它理解为内存空间连续的4个字节(int型占用4字节),则这4个字节的空间保存着一个数4。&是取地址符号,即把变量a的地址(即这4个字节的首地址)赋给指针p(记住指针p的类型和变量a的类型要保持一致,否则的话,要进行类型转换)。这样子,指针p就保存着变量a的地址。我们如果把指针p当做内存空间里面另外一个连续的4个字节,那么这4个字节保存的数就是变量a的地址。printf("%d",*p)和

printf("%d",a)的结果是一样的。这里的*是取变量符号(与&刚好作用相反,通过变量的地址找到变量),与定义时int *p的*号作用不同(定义时的*表示该变量是个指针变量,而非是取它指向的变量)。

(2) 数组和指针的关系。

指针与数组是C语言中很重要的两个概念,它们之间有着密切的关系,利用这种关系,可以增强处理数组的灵活性,加快运行速度,本文着重讨论指针与数组之间的联系及在编程中的应用。

1.指针与数组的关系

当一个指针变量被初始化成数组名时,就说该指针变量指向了数组。如: char str[20], *ptr;

ptr=str;

ptr被置为数组str的第一个元素的地址,因为数组名就是该数组的首地址,也是数组第一个元素的地址。此时可以认为指针ptr就是数组str(反之不成立),这样原来对数组的处理都可以用指针来实现。如对数组元素的访问,既可以用下标变量访问,也可以用指针访问。

2.指向数组元素的指针

若有如下定义:

int a[10], *pa;

pa=a;

则p=&a[0]是将数组第1个元素的地址赋给了指针变量p。

实际上,C语言中数组名就是数组的首地址,所以第一个元素的地址可以用两种方法获得:p=&a[0]或p=a。

这两种方法在形式上相像,其区别在于:pa是指针变量,a是数组名。值得注意的是:pa是一个可以变化的指针变量,而a是一个常数。因为数组一经被说明,数组的地址也就是固定的,因此a是不能变化的,不允许使用a++、++a或语句a+=10,而pa++、++pa、pa+=10则是正确的。由此可见,此时指针与数组融为一体。

3.指针与一维数组

理解指针与一维数组的关系,首先要了解在编译系统中,一维数组的存储组织形式和对数组元素的访问方法。

一维数组是一个线形表,它被存放在一片连续的内存单元中。C语言对数组的访问是通过数组名(数组的起始地址)加上相对于起始地址的相对量(由下标变量给出),得到要访问的数组元素的单元地址,然后再对计算出的单元地址的

内容进行访问。通常把数据类型所占单元的字节个数称为扩大因子。

实际上编译系统将数组元素的形式a[i]转换成*(a+i),然后才进行运算。对于一般数组元素的形式:<数组名>[<下标表达式>],编译程序将其转换成:*(<数组名>+<下标表达式>),其中下标表达式为:下标表达式*扩大因子。整个式子计算结果是一个内存地址,最后的结果为:*<地址>=<地址所对应单元的地址的内容>。由此可见,C语言对数组的处理,实际上是转换成指针地址的运算。 数组与指针暗中结合在一起。因此,任何能由下标完成的操作,都可以用指针来实现,一个不带下标的数组名就是一个指向该数组的指针。

4.指针与多维数组

用指针变量可以指向一维数组,也可以指向多维数组。但在概念上和使用上,多维数组的指针比一维数组的指针要复杂一些。

例如,在一个三维数组中,引用元素c[i][j][k]的地址计算最终将换成:*(*(*(c+i)+j)+k)。了解了多维数组的存储形式和访问多维数组元素的内部转换公式后,再看当一个指针变量指向多维数组及其元素的情况。 1 指向数组元素的指针变量

若有如下说明:

int a[3][4];

int *p;

p=a;

p是指向整型变量的指针;p=a使p指向整型二维数组a的首地址。

*(*(p+1)+2)表示取a[1][2]的内容;*p表示取a[0][1]的内容,因为p是指向整型变量的指针;p++表示p的内容加1,即p中存放的地址增加一个整型量的字节数2,从而使p指向下一个整型量a[0][1]。

2 指向由j个整数组成的一维数组的指针变量

当指针变量p不是指向整型变量,而是指向一个包含j个元素的一维数组。如果p=a[0],则p++不是指向a[0][1],而是指向a[1]。这时p的增值以一维数组的长度为单位。

5.指针与字符数组

C语言中许多字符串操作都是由指向字符数组的指针及指针的运算来实现的。因为对于字符串来说,一般都是严格的顺序存取方式,使用指针可以打破这种存取方式,更为灵活地处理字符串。

另外由于字符串以′\0′作为结束符,而′\0′的ASCII码是0,它正好是C语言的逻辑假值,所以可以直接用它作为判断字符串结束的条件,而不需要用字符串的长度来判断。C语言中类似的字符串处理函数都是用指针来完成,使程序运行速度更快、效率更高,而且更易于理解。


第二篇:c语言实验报告


学号:__________ 姓名:__________ 班级:__________日期:__________

指导教师:__________ 成绩:__________

实验一 上机操作初步和简单的C程序设计

一、 实验目的

1、熟悉C语言运行环境Turbo C++3.0

2、会简单的程序调试

3、熟悉C语言各种类型数据的输入输出函数的使用方法

4、掌握顺序结构程序设计

二、 实验内容

1、 上机运行本章3个例题,熟悉所用系统的上机方法与步骤。(习题1.7)

2、 编写一个C程序,输入a、b、c 3个值,输出其中最大者。(习题1.6)

3、 设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字。注意:在Trubo C++ 3.0中不能输入汉字,只能输入英文或拼音。(习题4.8)

4、 运行如下程序,写出运行结果。fanwen.glzy8.comwww.glzy8.com整理该文章,版权归原作者、原出处所有...

#include

void main()

{

int a=1,b=2;

a=a+b; b=a-b; a=a-b;

printf("%d,%d\n",a,b);

}

三、 实验步骤与过程

四、程序调试记录

更多相关推荐:
实验报告 范本

研究生实验报告范本实验课程实验名称实验地点学生姓名学号指导教师范本实验时间年月日一实验目的熟悉电阻型气体传感器结构及工作原理进行基于聚苯胺敏感薄膜的气体传感器的结构设计材料制作材料表征探测单元制作与测试实验结果...

实验报告范本

学生实验报告书实验课程名称开课学院指导教师姓名学生姓名学生专业班级200200学年第学期实验教学管理基本规范实验是培养学生动手能力分析解决问题能力的重要环节实验报告是反映实验教学水平与质量的重要依据为加强实验过...

实验报告要求及范文

滁州市政府组织退耕还林(黑体,小二,1.5倍行距,段前段后0.5行)——5060451007范雪花(学号,TimesNewRoman,四号)(姓名,宋体,四号,单倍行距)一、实验目的(宋体,四号,单倍行距,段前…

有关实验报告的书写格式

有关实验报告的书写格式江苏省泗阳县李口中学沈正中一、完整实验报告的书写完整的一份实验报告一般包括以下项目:实验名称:实验目的:实验器材:实验原理:实验步骤:实验数据记录(表格)及处理:实验结论(结果推导):实验…

实验报告范本

学生实验报告书实验课程名称开课学院指导教师姓名学生姓名学生专业班级200200学年第学期实验教学管理基本规范实验是培养学生动手能力分析解决问题能力的重要环节实验报告是反映实验教学水平与质量的重要依据为加强实验过...

实验报告范本

实验报告范本,内容附图。

实验报告范文

实验报告范文,内容附图。

网页设计实验报告书_范文

北京信息科技大学网页美术设计实验报告学院/系人文社科系学生姓名代俊丽专业行政管理学号20xx012299班级行政1001实验教师李晋二Ο一二年x月x日实验报告实验报告书一实验目的1.学习html语言和drea…

英文实验报告模板

Determinationofheavymetalsinsoilbyatomicabsorptionspectrometry(AAS)Name:XuFeiGroup:The3rdgroupDate:Sep.20…

初中物理实验报告范文

“浮力消失”了做下面的小试验器材找一个底面很平的容器,让一个蜡烛头紧贴在容器底部,再往容器里倒水,蜡烛头并不会浮起来;轻轻地把蜡烛头拨倒,它立刻就会浮起来。可见,当物体与容器底部紧密接触时,两个接触面间就没有液…

电子商务实验报告范文

电子商务实验报告范文实验一实施B2C平台进行网上购物一、实验目的掌握在网上使用网上银行、电子钱包、支付宝进行网上支付的操作。二、实验环境电子商务模拟系统地点:1栋401试验机房三、实验内容及步骤(一)实验内容:…

实验报告模板

多媒体课件设计与制作实验报告实验编号3实验名称多媒体课件集成与发布

实验报告范文(46篇)