对c语言指针教学问题的探究

对c语言指针教学问题的探究

ID:19577004

大小:111.50 KB

页数:21页

时间:2018-10-03

对c语言指针教学问题的探究_第1页
对c语言指针教学问题的探究_第2页
对c语言指针教学问题的探究_第3页
对c语言指针教学问题的探究_第4页
对c语言指针教学问题的探究_第5页
资源描述:

《对c语言指针教学问题的探究》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、对C语言指针教学问题的探究摘要:本文讨论了C语言中指针的各种应用形式,认真分析了指针在数组、函数和动态内存分配等方面应用的特点和优点,对如何学好和掌握C语言的指针有十分重要的指导意义。
  关键词:指针;指针变量;数组;函数;动态内存分配
  中图分类号:G642文献标识码:A
  
  1引言
  
  指针是C语言中一种特殊的数据类型,运用指针编程是C语言最主要的风格之一。利用指针变量可以访问各种类型的数据;能动态地分配内存空间;能很方便地使用数组和字符串;并能像汇编语言一样处理内存地址,编出精练而高效的程序。但是,大部分学生对指针的

2、理解和应用还是感到困惑,特别是什么场合用到什么类型的指针变量,应用指针变量应注意哪些问题等。本文对指针应用中的一些问题进行了梳理,以利于学生掌握指针的应用。
  
  2数组中指针的应用
  
  2.1使用指针引用数组元素的优点
  对数组元素既可以用下标a[i]的方式引用,也可以用指针变量*p的方式引用。应该说,下标方式能对数组进行随机访问,指针变量却做不到这一点。但是,引入指针的主要目的是为了提高对数组元素访问的速度。
  在C语言中,数组中每一维下标的下界定义为0。对一维数组,设a[i]的存储地址为Loc(a[i]),每个数据元素

3、占d个存储地址,则第i个数据元素的地址为
  Loc(a[i])=Loc(a[0])+i*d(1)
  对二维数组a[m][n],a[m][n]的存储地址是:
  Loc(a[i][j])=Loc(a[0][0])+(i*n+j)*d(2)
  实际上,对数组元素的引用,都要先计算数组元素的地址,才能对指定单元进行操作。显然,一维数组中的地址要进行1次乘法和1次加法运算;二维数组中的地址则要进行2次乘法和2次加法运算。如果用指针变量p指向数组,连续对数组元素进行引用,可用p++和p--来移动指针。每次的引用地址只须进行简单的加法运算,引用数组元素的速

4、度比使用数组下标要快得多。表1是在IBM-R40上使用下标和指针两种不同方式对10000个元素进行10000次访问的时间比较。
  从测试结果看,随着数组维数的增加,使用指针方式访问数组的速度基本不变,但下标方式的访问速度明显减慢。
  2.2动态数组的应用
  在C语言中,数组一般都是静态的。数组已经定义,所占用的内存空间就一直被占用,直到该函数退出时为
  
  止。但如果使用指针变量,就可以实现需要时给数组分配内存,不需要时释放内存,可节约大量的内存空间。下面的程序就是使用了指针变量,使用动态数组的一个例子。
  
  typ

5、edefstruct
  {inta[MAXSIZE];
  }A;
  main()
  {inti;
  A*p;
  p=(A*)malloc(sizeof(A));/*动态分配内存*/
  …………
  free(p);/*释放内存*/
  }
  
  3函数参数中指针的应用
  
  在C语言中,函数的形参是局部变量。实参和形参变量间的传递是值传递,即将实参的值传递给形参变量。形参在函数中如何变化,并不改变实参的值,我们称之为单向传递。这种参数的单向传递减少了函数之间的耦合性,增加了其

6、内聚性,有利于结构化编程。但是,如果调用函数想从被调函数中得到一个以上的返回值,就比较困难。当然,通过全局变量也能实现,但过多的使用全局变量又增加了函数之间的耦合性,不利于结构化编程。如果实参和形参都使用指针变量,就可达到此目的。下面的程序就是使用指针变量实现两个变量值交换的例子。
  
  intswap(int*p1,int*p2)
  {inttemp;
  temp=*p1;
  *p1=*p2;
  *p2=temp;
  }
  main()
  {
  inta,b;
  int*pointer

7、_1,*pointer_2;
  scanf("%d,%d",&a,&b);
  pointer_1=&a;pointer_2=&b;
  if(a  printf("%d,%d",a,b);
  }
  
  需要说明的是:
  (1)实参和形参之间传递的仍然是值,但该值不是变量的值,而是变量的地址,如图1所示。此时,实参和形参都指向了同一变量,对形参变量所指变量值的改变也必然改变实参变量的值,如图

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。