C语言指针及应用

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:bbnn1122
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:首先介绍了C语言中指针的有关概念,然后运用指针实现了一个链表程序,针对初学者在实现该程序时常见的一些错误,分析了错误出现的原因,并对这些错误进行了更正。
  关键词:C语言;程序;指针;链表
  中图分类号:TP312文献标识码:A文章编号:1009-3044(2010)01-244-03
  Application of Pointer in C Language
  ZHANG Bin-lian
  (School of Information Management and Engineering, Jishou University, Zhangjiajie 427000, China)
  Abstract: First introduced concept of pointer in C language, then designed a link-list program by using pointer. For some common errors appeared when beginners designed program with C language, analyzed the wrong reasons and corrected these errors.
  Key words: C language; program; pointer; link-list
  指针是C语言的一个重要概念,在C语言中被广泛的使用,它和数组、字符串、函数间数据传递有着密不可分的联系。在某些场合,指针是运算得以解决的唯一途径,它可以有效的表示和实现复杂的数据结构。正确掌握指针的应用,可以使程序简洁、紧凑、高效。由于指针的概念比较复杂,使用比较灵活,所以初学时常会出现错误,而一般教材中讲述指针相关内容是从语法和用法着手,并没有对实际程序中的错误进行分析。因此对于初学者,有必要根据实际程序对指针的相关概念和使用时常见的一些错误进行分析。本文将先介绍指针及指针的类型,然后分析几种初学者在使用指针实现单链表操作时出现的错误,并对这些错误进行分析更正。
  1 指针的相关概念
  1.1 定义
  指针是某一个实体的地址。当我们要访问某一变量是,如果不是直接通过变量名来进行,而是通过存放变量地址的指针见解进行,称为“间接访问”。C语言中处理一个变量、一个数组、一个函数、一个文件时,需要由操作系统把这些量调入内存的不同存储单元中,每一个存储单元都有一个地址,指针变量是用于存放某一类型变量的地址的变量。
  1.2 指针的类型及应用
  1) 指向简单变量的指针
  指针所指的数据类可以是简单的数据类型。
  2) 指向数组的指针
  指针所指的数组既可以是一维数组,也可以是多维数组。
  例:void main()
  {int arr[3] = {1,2,3};
  int *p;
  for (p = arr; p < arr 3; p )
  printf (" %d ", *P);
  }
  程序中指针p指向了数组arr的首地址,通过p 来访问a数组的每一元素。
  3) 指针数组
  指针数组是指数组元素是由指针变量组成的。定义如:int *p[2],其中指针数组p包含两个元素,每个元素是指向整型数据指针。
  例:void main()
  {int *p[2],i;
  int arr[2] [ 2 ]={1,2,3,4};
  for (i = 0;i<2;i ) p [i] = a [i];
  printf ("% d ",*(p[0] 1));
  }
  程序中p是一个指针数组,通过for循环语句给指针数组中的每个指针变量赋值,p[0]的初值为二维数组a的首地址,*(p[0] 1)便是元素a[0][1],因此程序输出2。
  4) 指向指针的指针
  指向指针的指针是指指针变量指向的是某个指针的地址,定义如:int **P。
  例:void main ()
  { int **P,i;
  int arr[2][2]={1,2,3,4};
  p = a;
  for (i = 0;i<2;i )
  printf(" %d ",*(*(p 1) i));
  }
  程序中指针p指向二维数组a的首地址,p 1指向数组a的第二行,*(p 1)为第二行第一个元素的地址,**(p 1)为数组第二行的第一个元素,*(p 1) 1为第二行第二个元素的地址,*(*(p 1) 1)为数组第二行的第二个元素,因此程序输出3和4。
  5) 指向函数的指针
  指针变量指向函数的首地址,然后通过该指针变量调用该函数。定义如:int (*p) ()。
  例:int max (int a,int b)
  {int c;
  if (a>b) c=a;else c=b;
  return (c);
  }
  void main ()
  {int(*p)();int a,b;
  p=max;scanf ("% d,%d",
其他文献
摘要:根据《计算机网络》课程在实际岗位中的工作过程,以学生知识背景和实际接受能力为前提,设计出合理的教学任务。通过任务驱动教学法组织教学,对提升学生的计算机网络素质,激发学生的学习积极性,培养符合社会需求的网络人才是极其有效的途径。  关键词:任务驱动教学法;计算机网络;任务   中图法分类号:G521 文献标识码:A 文章编号:1009-3044(2010)04-1022-03  Task-dr
客户名址资源在当今网络时代电子商务领域的重要性正日益显现,如何保护企业的宝贵客户资源不被竞争对手截获,同时提高对客户敏感信息的保护,该文提出采用虚拟名址转换技术加以解
摘要:科技的发展使人类的生活越来越自动化,这就需要借助于两类技术,一是现场监控系统,二是Internet。该文介绍了一种典型的基于Intemet的远程监控系统,本系统采用的是嵌入式技术,核心是51系列单片机,它是系统的神经中枢;另一个是W5100芯片,此芯片内部集成了TCP/IP协议栈、以太网介质访问层(MAC)和物理层(PHY),负责系统与外界的沟通,在现场与控制台之间搭建一个方便快捷的桥梁:其
《夷坚志》是宋代影响最大的一部文言小说集,集中有许多侠义小说,这些小说多以宋金战争为背景演绎故事,塑造了女性侠、文人侠、士子侠、市井侠等类型众多的侠义之士,他们的侠举义
通过黄龙病在柑橘中的传播机理,建立了一个媒介传染病动力学模型.利用LaSalle不变性原理,Ben-dixson-Dulac定理证明了当R0≤1时无病平衡点全局渐近稳定,当R0〉1时地方病平衡
以IPSecVPN系统为研究,重点分析了IPSec协议协议标准、安全服务、安全关联和密钥管理。分析了基于IPSec的VPN系统中的隧道、加解密、用户认证和访问控制等四项关键技术。最后
近年来,我国中等职业教育财政公平性研究主要集中在以下四个芳面:一是中等职业教育财政纵向公平性差异;二是中等职业教育财政横向公平性差异;三是中等职业教育财政不公平性的原因
摘要:XML文件的高可扩展性和通用性目前被广泛用作中间数据模式,而嵌套表格在描述具有层次结构的复杂对象方面具有简单、直观的特点,在最终编程领域适合作为复杂数据结构的呈现方式被使用。论文提出一种将复杂层次结构的XML文件映射为嵌套表格的方法,利用中间数据结构,给出了复杂层次结构的XML文件映射为中间数据结构的算法。实验表明方法有效地降低了XML文件到嵌套表格映射的复杂性。  关键字:XML;嵌套表格
校企联合培养是目前应用型软件人才培养的一种新思路。从多年的培养经验出发,分析了课程设置、"走出去"、"引进来"模式以及产学研软件合作基地的建设等问题,并提出"引进来"模