C语言指针的研究与运用

来源 :中小企业管理与科技·学术版 | 被引量 : 0次 | 上传用户:jinkejinlv
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:指针是C语言的精髓部分,也是C语言的重要特色。本文从指针的基本概念出发,结合具体实例对指针的类型进行了分析,并对指针在实际应用中常出现的问题进行了归类总结,希望对初学者理解“指针”这一重要概念有所帮助。
  关键词:C语言 指针 数组 函数
  
  指针是C语言中的精髓,它在C语言中被广泛的使用。理解和运用好指针可以灵活方便地处理程序中各种复杂问题,可以轻松完成其他高级程序设计语言不便完成的任务。
  一、指针的概念
  一个指针变量的值就是某个内存单元的地址或称为某内存单元的指针。
  指针的引入为系统存取数据提供了一种“间接访问”方式。所谓间接访问,是先访问存放变量地址的存储单元,得到该变量的地址,再对变量内容进行访问。
  指针变量是一种特殊变量。系统为指针变量分配一块连续存储单元不是供其存储数据,而是存储内存地址。因此,指针变量是存储内存地址的变量。
  二、指针的类型
  1、指向简单变量的指针。指针所指的数据类可以是简单的数据类型。
  例:(1)int*p,i;p=&i;意思是指针变量指向整型变量i
  (2)char*p,a;p=&a;意思是指针变量指向字符型变量a
  (3)int*p,a[10];p=a;意思是指针变量指向数组a
  2、指向数组的指针。指针所指的数组既可以是一维数组,也可以是多维数组。
  例:main()
  {inta[4]={2,4,6,8};
  int*p;
  for(p=a;p  printf(“%2d”,*p);}
  分析:指针p指向了a数组的首地址,通过p++来访问a数组的每一元素。
  3、指针数组。数组元素是由指针变量组成的一种指针。定义如:int*p[2];指针数组p包含两个元素,每个元素指向一个整型数据。
  例:main()
  {int*p[2],i,a[2][2]={1,3,5,7};
  for(i=0;i<2;i++)
  p[i]=a[i];
  printf("%d\n",*(p[1]+1));}
  分析:指针p是一个数组,通过for循环语句给指针数组中的每个指针变量赋值,p[1]的初值为数组a的第二行的首地址,*(p[1]+1)便是元素a[1][1],因此程序输出7。
  4、指向指针的指针。指针变量指向的是指针的地址,定义如:int**p。
  例:main()
  {inta[2][2]={1,3,5,7};
  int*p[2],**q,i;
  for(i=0;i<2;i++)
  p[i]=a[i];
  q=p;
  printf("%d\n",*(*(q+1)+1));}
  分析:指针数组p的各个指针变量指向数组a的各行首地址,q指向指针数组p的首地址,*(q+1)等同p[1],如此,*(*(q+1)+1)便等同*(p[1]+1)也就是a[1][1],因此程序输出7。
  5、指向函数的指针。指针变量指向函数的首地址,然后通过该指针变量调用该函数。定义如:int(*p)()。
  例:intmax(inta,intb)
  {return((a>b)?a:b);}
  main()
  {intmax(int,int);
  int(*p)();inta,b;
  p=max;scanf("%d,%d",&a,&b);
  printf("max=%d\n",(*p)(a,b));}
  分析:int(*p)()表示定义了一个指向函数的指针变量,函数名max代表了函数的入口地址,执行p=max后,p指向了函数max,(*p)(a,b)便是通过p调用函数max。
  6、指向文件的指针。C语言对文件的操作并不是直接通过文件名进行的,而是根据文件名生成一个文件指针,通过该指针来对文件进行操作.定义如:FILE*fP;(fp为文件指针,此时fp不指向任何文件)。
  三、指针应用中常见的错误
  1、把数据赋给指针变量。指针在使用前必须进行初始化,赋予指针的值必须是地址。
  例:main()
  {inti=6,*p;p=6;
  printf“(*p=%d\n”,*p);}
  正确语句:p=&i;“&”是一个取变量地址的运算符。
  2、指针常量运算错误。程序中常量指针是不能被修改的。典型有数组名指针常量和指向字符串常量的指针。
  例:main()
  {inta[5]={1,2,3,4,5},*p;p=a;
  printf“(%d\n”,*(++a));}
  正确语句:printf“(%d\n”,*(++p));
  3、指针赋值类型不一致
  例:main()
  {int*p,a[3][3]={{1,2,3},{4,5,6},{7,8,9}};p=a;
  printf(“%d\n”,*p);}
  正确语句:p=a[0];或p=&a[0][0];如果一定把a赋值给p,必须先将a转换成整型指针类型,如:p=(int*)a;。特别是将多维数组赋值给指针变量时应注意类型匹配。
  参考文献
  [1]陈建辉,C语言指针探讨[M]·莆田高等专科学校学报,2001
  [2]施冬梅,C语言指针教学中应注意的几个方面[M].镇江高专学报,2004
  [3]赵森,李卓民,C程序设计[M].北京:冶金工业出版社,2005
  本文受襄樊学院教学研究项目JY0813资助
其他文献
摘要:本文研究探讨了低挥发分煤燃烧特性和W型火焰炉燃烧技术发展及存在问题,这对于建设我国资源节约型社会有重要意义和指导意义。  关键词:低挥发分煤 “W”型火焰锅炉 燃烧    0 引言    我国是一个以煤为主要一次能源的国家,目前煤占能源泉消费的70%以上。随着经济社会的发展,我国能源需求不断增长,资源短缺现象逐渐显露出来。2003年我国能源消费总量16.78亿t标准煤,比上年增长10.1%,
期刊
摘要:运用SWOT分析方法综合分析了当前环境下青岛中小海运企业所具有的优势、劣势、机会和威胁,并提出了相应的发展对策。  关键词:中小海运企业 SWOT 第三方物流    一、引言    我国加入WTO后,整个海运市场的开放程度越来越大,行业竞争不加剧。在这种背景下青岛市中小型海运物流企业应该怎样面对激烈的竞争,应该采取何种发展战略?这将决定中小型海运企业能否继续生存和发展。    二、青岛中小海
期刊
摘要:IP电话技术突飞猛进,已从当初PC到PC的机连接方式发展到IP电话网关方式,通过IP电话网关可以将PBX与因特网连接起来,从而实现普通话机通过因特网进行通信。  关键词:IP电话 应用 发展    0 引言    通常我们的电话交换分为:电路交换和分组交换。传统的电信网络就是电路交换,每个电话确实分配了一条64K的线路用于通话。分组交换就是分组打包交换,把语音分别打成不同的数据包,通过不同的
期刊
摘要:社会经济环境变化和管理科学的发展,是影响管理会计发展的两个主要因素。二十一世纪新的经济和管理环境,迫使管理会计必须加以创新和发展。为此,笔者从管理会计观念、管理会计内容和管理会计的研究方法三个方面谈了自己粗浅的看法。旨在抛砖引玉,唤起广大会计工作者的研究热情,使管理会计的作用在新环境下得以充分发挥。  关键词:管理会计 观念 企业价值 决策 实证研究    近年来,全球经济发展呈现出一种新的
期刊
摘要:介绍了河南油田东部第一口水平井的设计与施工情况,提出了一套适合中浅层水平井施工的井眼轨迹控制技术和钻井液技术,为今后在东部地区开展该类水平井的施工提供了良好的借鉴和参考。  关键词:钻井设计 水平井 河南油田    注:本文中所涉及到的圖表、注解、公式等内容请以PDF格式阅读原文
期刊
摘要:油田开发是石油行业的重大课题。随着对石油能源需求的增加,有效、合理、科学地开发油藏成为了当前亟待解决的任务。针对我国油藏在开发中所面临的实际问题,在总结前人已有成果的基础上,本文对油田开发过程中的储层伤害及保护技术,特别是对陕北子长油田长6储层的伤害特征及保护技术进行研究。  本文首先分析了该油田地质概况和储层特征,对储层潜在的伤害因素和伤害机理进行描述。其次,阐明了油田开发过程中工艺技术措
期刊
摘要:本文基于空间生产的相关理论和概念,提出了旅游是一种获取经济效益的空间生产及商品化过程。并以经济学的外部性、公共产品等概念为工具,分析了旅游产业的发展为什么需要政府的扶持,及云南省旅游的现状和政府已经发挥的作用,最后提出了旅游空间商品化中政府行为的着重点。    一、空间的生产与旅游空间商品化    法国哲学家亨利·列菲弗尔在发展马克思主义关于“生产”的论述时提出了“空间的生产”这一概念。19
期刊
摘要:中国是个有五千年历史的文明古国,以儒、道、佛三家为核心的传统文化长期以来支配和影响着中华民族的精神生活。企业文化作为中华文化的一小部分,自然会在方方面面受到传统文化核心精神的影响。就和中国人的生活态度以及个性特征受到中国传统文化根深蒂固的价值影响一样。中国企业文化的发展也是绕不开中华传统文化核心精神对企业精神和企业价值观的影响。因此根据企业自身发展特点吸纳中华传统文化的精髓,增进企业文化的文
期刊
摘要:针对城市虚拟现实的实现问题,分析了3D MAX在虚拟模型的设计方面优点和不足,阐述了利用3D MAX在城市虚拟现实建立的方法和步骤,并以江苏淮安市的中心广场的模型为例,探讨了城市虚拟现实的一些关键技术。  关键词:3D MAX 虚拟现实 三维建模  中图分类号:P231 文献标识码:A    引言    在城市规划领域,传统的规划和管理手段已不适应城市飞速发展的需要。为此,要适应现代城市发展
期刊
摘要:产业结构调整是实现昆明经济持续发展的重要保证。本文回顾了1978年以来昆明三次产业的结构变迁,指出当前产业结构存在的问题。从制度建设的角度分析了原因并提出解决措施。  关键词:产业结构 调整 制度    产业结构在国民经济结构中处于核心地位,它反映了一个经济实体在诸多经济发展模式中所作的基本选择。产业结构升级一直是保证经济稳定、协调发展的重要手段之一。在影响产业结构调整的众多因素中,制度合理
期刊