《C语言程序设计》中的指针形参和函数体中数组实参问题的教学研究.pdf

C

C

《CC语言程序设计》中的指针形参和函数体中数组实参问题的教学研究

山东理工大学计算机学院 董敬富 淄博市劳动局职业技能鉴定中心 董京亮

摘要:指针是C 语言中一个重要的概念,也是C语言中一个重要的特色。正确而灵活地

运用指针可以提高程序的运行速度和降低程序的存储空间。在构造链表、树、图等复杂的数

据结构,方便地使用字符串、数组,从被调函数得到多个值,甚至可以动态地分配内存等普通程

序所不能实现的功能,也可以有效地表示和实现复杂的数据结构。同时指针又是一个十分难

以理解的概念,特别是指针形参和数组实参传递参数时,由于分不清参数的性质,错误地使

用指针将使程序中隐藏一些不容易发现且难以排除的错误。本文以浅显的论述,讲述指针形

参和函数体中数组实参问题,以期达到抛砖引玉的目的。

关键词:地址 指针 函数 形式参数 实在参数

中图分类号:O174 文献标识码: A 文章编号:

一、指针概念的理解

计算机的内存是以字节为单位的一片连续的存储空间,为了有效的管理和使用每一个空

间,系统给每一个字节进行编号,这个编号就是该字节在内存的地址。指针是一个特殊的变

量,它存储的数值恰恰就是内存的这个编号,为了区别存放“编号”变量和“数值”变量,

就把“编号”变量形象的称为指针变量。这个问题不难理解,通常我们会讲上午1、2节在

9号教学楼211教室上C语言,这里的211就是一个教室的编号而已,我们确实把它作地址

用了。在你听到上述表述时,是不是在脑海中在判断哪是9号教学楼,哪个是211教室。这

时你的脑海中是否涌现出了一个无形的箭头指向了“9号教学楼211教室”呢?所以说指针

是地址的形象化称呼,并非在内存中真正有指针存在。而数值211则可表示重量长度等。int

x=1,*p;此时定义了一个变量x,内容为数值1,一个指针变量p,指向不定空间。在执行语句

p=&x;后,变量x的地址送p;也就是说p指向了x。

二、函数概念的理解

函数是模块设计的重要思想,它是把程序中多次用到的程序段取出来给它取上一个名

字,在程序中用到该程序段时只要写上它的名字就可以了,这个名字表示“做什么”,至于

“怎么做”,则在定义函数时详细说明。函数名是这个程序段的首地址,是一个常量地址(指

针常量)。由于函数的多次调用,它对符合量的某一特征的参数都应该能够处理,这样说来

它使用的参数就不可能用一个具体的、实在的参数表示,只能用形式上代表着量的某一特征

的参数来表示,这种参数就是形式参数。实在参数则是调用函数时所处理的一个具体的,实

在的值。也就是说函数的形式参数重点强调的是“形式上代表着量的某一特征的参数”,就

像我们平时所说的“C 语言老师”,这个“老师”可以是张三也可以是李四,但是张三也好

李四也罢,必须符合能教授C 语言这一特征。而实在参数则强调的是函数处理时的具体的

值。上例所讲中的“C 语言老师”,在开始具体讲授C语言课时的哪个老师,是实在参数。

简单讲,在定义函数时的参数是形式参数,在调用函数时的参数是实在参数。

Intfun(inta,intb) a,b是形式参数,特征是整形数

{intc;

c=a+b;

returnc;

}

Main()

{intx,y,z;

Scanf(“%d%d”,&x,&y);

z=fun(x,y); x,y是实在参数,通过scanf函数输入的任何整形数都可以

printf(“%d”,z);

}

三、数组概念的理解

数组是C 语言最简单的一种构造类型,每个数组包含一组具有同一类型的变量,这些

变量在内存中占有连续的存储单元,使用相同的名字不同的下标来引用不同的单元。inta[10];

计算机在执行该语句后会分配10个连续空间,这10个空间有一个共同的名字叫a,这个a

是数组的首地址,是一个常量地址值。a+1 等于&a[1]。若要访问哪一个空间,则分别用

a[0],a[1],a[2]…a[9],来表示。二维数组则可以理解为一维数组的每一个元素又是一维数组,

intarray[3][4] ; 共有3行,每行有4列的元素组成。在存储时则按行优先或列优先连续存储。

至于array+1 和&array+1 是不同的。array+1 是从array算起,按int[4]类型的大小

c语言形参指针 实参数组,《C语言程序设计》中的指针形参和函数体中数组实参问题的教学研究.pdf...相关推荐

  1. c语言代码大全表解释_C语言常用错误代码释义大全,值得收藏!

    对于刚学编程,刚接触C++的新手来说,编译运行报错是最头疼的一件事,爆出一堆英文,英语差一点的又不知道什么意思,所以也不知道如何去改,在此,我给大家传一份常见错误中英文对照表及简单解释,希望可以帮到大 ...

  2. [C语言]指针之数组逆序函数:编写函数invert,将数组中的n个整数按相反顺序存放,要求用指针变量作为函数形参,并用指针的方法遍历该数组。在main函数中输入n个整数,存入数组a中;然后调用上述函

    编写函数invert,将数组中的n个整数按相反顺序存放,要求用指针变量作为函数形参,并用指针的方法遍历该数组. 在main函数中输入n个整数,存入数组a中:然后调用上述函数处理数组a,最后逐个输出数组 ...

  3. c语言多维数组指针地址讲解,C语言入门之多维数组的指针变量

    一.多维数组地址的表示方法 设有整型二维数组a[3][4]如下: 0 1 2 3 4 5 6 7 8 9 10 11 设数组a的首地址为1000,各下标变量的首地址及其值如图所示. 在前面曾经介绍过, ...

  4. 指针c语言与数组,C语言指针与数组

    C语言指针与数组 数组的下标应该从0还是1开始? 我提议的妥协方案是0.5,可惜他们未予认真考虑便一口回绝    -- Stan Kelly-Bootle 1. 数组并非指针 为什么很多人会认为指针和 ...

  5. C语言基础1(数据类型、常变量、运算符、基本语句、选择结构、循环结构、数组、字符串、函数、指针)

    数据类型及运算 数据类型 一.整形(int) 整形变量的定义.输入和输出 打印格式 含义 %d 输出一个有符号的10进制int类型 %o(字母o) 输出8进制的int类型 %x 输出16进制的int类 ...

  6. C语言笔记含源码(变量、输入输出、分支、循环、函数、数组、指针、字符串、结构体)小总结

    文章目录 一.变量与输入输出 二.分支语句 三.循环 四.函数 五.数组 六.指针 七.字符串 八.结构体 一.变量与输入输出 定义变量需要:类型.变量名.变量值(可有可无) #include < ...

  7. IOS笔记-C语言中的指针与数组

    1.指针与数组 1)指针与一维数组 i.数组指针(指向数组元素的指针) 类型  *指针变量名: 指针定义完成后要初始化(不想让指向任何内容,=0,=NULL) int a[10]; int *p =  ...

  8. 【C 语言】字符串模型 ( 字符串翻转模型 | 抽象成业务函数 | 形参返回值 | 函数返回值 | 函数形参处理 | 形参指针判空 )

    文章目录 一.字符串翻转模型 业务函数 二.完整代码示例 一.字符串翻转模型 业务函数 将上一篇博客 [C 语言]字符串模型 ( 字符串翻转模型 ) 的代码 , 主要业务逻辑 , 抽象成函数 ; 字符 ...

  9. c语言指着与数组,C语言指针与数组

    一维数组 与  指针 1.C语言规定:如果指针变量p已指向同一数组中的下一个元素,见下: 定义: int dates[4],  *p; 那么:dates+2=&dates[2]; *(date ...

最新文章

  1. keras 的 example 文件 cifar10_cnn.py 解析
  2. HDU3662(求三维凸包表面的多边形个数,表面三角形个数,体积,表面积,凸包重心,凸包中点到面的距离)
  3. 串口数据字节位的理解
  4. Java Formatter format()方法及示例
  5. Intellij idea 自动生成serialVersionUID
  6. CentOS7 时间与网络时间同步
  7. 蓝牙车库门禁卡原理及实践
  8. 大学生记账本微信小程序
  9. 编译优化之 - 常量传播入门
  10. 2-AltiumDesigner原理图设计
  11. Shine 和 8hz-mp3
  12. ⌨RK61键盘使用方法
  13. linux 程序被Killed,查看原因
  14. python读取excel(读写处理xls或xlsx)
  15. c语言编程上升沿怎样写,plc结构化编程怎么写
  16. Oracle DBA手记4:数据安全警示录
  17. 淘宝的字体也改变了(今天)
  18. LeetCode 561 Array Partition I(数组划分)
  19. 再见 Docker,是时候拥抱下一代容器工具 Containerd 了!
  20. 永恒之蓝和震网病毒复现

热门文章

  1. 数据结构 c++用栈实现四则运算_数据结构之线性结构——栈的四则运算实现
  2. objective-c 编写规范_Objective-c成员变量的定义方式?如何写才规范?
  3. linux环境下配置虚拟主机域名,Linux下三种虚拟主机的配置方法
  4. python字典定义方式_Python字典常用方法及汇总
  5. 牛客假日团队赛6 D 迷路的牛 (思维)
  6. 爱的十个秘密--2.思想的力量
  7. C#将运算字符串直接转换成表达式且计算结果
  8. Appium 服务器参数
  9. java Object类是可以接收集合类型的
  10. 词典对象 NSDictionary与NSMutableDictionary