欢迎光临112期刊网!
网站首页 > 论文范文 > 计算机论文 > 计算机应用 > C语言指针的研究和探讨

C语言指针的研究和探讨

日期:2023-01-24 阅读量:0 所属栏目:计算机应用


摘 要:指针是C语言的精华部分,也是C语言学习的重点和难点,正确而灵活地应用指针是学习C语言中最重要的环节,也是我们掌握C语言的一个标志。理解和运用好指针可以灵活方便地处理程序中各种复杂问题,可以轻松完成其他高级程序设计语言不便完成的任务。在某些场合,指针是使运算得以解决的唯一途径,同时正确而灵活的掌握运用它,可以提高程序的运行速度,从而有效地表示和实现复杂数据结构。

关键词:C语言;指针;程序设计;变量;标识符
  C语言在处理变量、数组、函数时,需要由操作系统把这些数据调入内存的不同存储单元中,每个内存单元都对应着一个地址,计算机就是通过访问这个地址来存取对应单元的内容。C语言中的每种数据类型在内存中存放所占用的存储单元数是固定的。从而根据数据的第一个存储单元地址(首地址)及数据类型,计算机就可以访问这个数据。C语言声明一个变量即表示在计算机中为该变量开辟一块内存空间,变量的值即该内存中所保存的值,可以使用变量名对该内存的内容进行访问或修改,或者通过先求出该变量所占内存的地址,然后直接对该内存进行访问或修改。变量对应的首地址称作变量的指针,指针变量是用于存放某一类型变量地址的变量,其值为所指向变量的内存地址。
  指针变量的声明规则为:类型标识符*标识符,其中“类型标识符”表示该指针变量所指向的变量的类型,标识符是该指针变量的名字。例如:
  int i=1;
  int *p=&i;
  那么此时p为一个指向int类型的指针,其值为变量i所占内存的地址,而*p即为该内存所保留的的数值1,其中运算符&是在执行取地址操作,就是说&i表示的是i的地址,而不是i的数值,同时也可以通过对指针变量p的操作来对i的值进行访问和修改。需要注意的是,与一般变量一样,对于外部或者静态指针变量,若在定义中未进行初始化,指针变量将自动被初始化为NULL,即为空指针。那么下面简单介绍一些关于指针的应用:
正确使用指针变量可以提升程序的执行效率
  正确使用指针变量可以编写高质量、高效率的C程序。以下从数组元素的引用、函数调用的代价和因为错误使用指针而造成的问题三方面进行分析, 以更清晰地介绍使用指针变量对C程序运行效率的影响。
数组元素的引用
  #include ""stdio.h""
  main()
  {
  int a[5]={1,2,3,4,5},i,*p;
  for (i=0;i<5;i++)
  printf(""%d "", a[i]);
  for (p=a;p   printf(""%d "",*p);
  }
  在该程序中,对数组元素的引用采用了两种方法:下标法和指针法。采用下标法时,C编译系统是将数组元素a[i]处理成*(a+i),即按数组首地址加上相对位移量得到要找的元素的地址,然后找出该单元中的内容。而采用指针法是用指针变量直接指向元素,不必每次都重新计算地址。所以指针法的执行效率要比下标法的高很多。
函数调用的代价
  #include ""stdio.h""
  struct s
  {
  int num; char name[10]; float score;
  }
  f(struct s *p)
  {
  int i;
  float sum=0,ave;
  for(i=0;i<5;i++,p++)
  sum=sum+p->score;
  ave=sum/5;
  printf(""%.0f,%.2f"",sum,ave);
  }
  main()
  {
    {struct s *p;
     struct s xs[5]={{1,""mali"",89},
  {2,""lili"",78},{3,""nimi"",90},{4,""lini"",65},
  {5,""yisu"",82}};
  p=xs;
  f(p);
  }
  在该程序中,实参传给形参的是结构体变量的地址,这样在函数调用时就无需复制大量数据,从而减少时间和空间的开销。编写程序时,如果需要传入一个占比较大内存的数据类型, 如数组或结构体变量,为了提高程序运行效率,都是传递该变量的地址。
指针指向的地址偏移的错误
  这种情况常出现的原因是, 错误地将指向动态分配内存的指针当着指向一般变量的指针使用。示例程序如下:
  void Test (void)
  {
  char *pChar=(char*)malloc(sizeof(char ));
  char chs;
  pChar=&chs;
  free(pChar);
  }
  该程序的目的是想将chs内容传递给pChar指针指向的内存,但该程序代码将会使指针pChar指向chs所占有的内存地址,其先前指向的内存空间将成为垃圾地址,因为程序没有办法再访问该内存空间了。这里pChar是一个野指针,程序将会导致内存泄漏。同时,在调用free 函数释放指针pChar的内存时,将会发生异常错误。因为此时pChar指向的内存已经不是由malloc函数动态分配的,不能使用free函数进行释放。要避免这样的情况发生就应该避免将指向动态分配内存的指针在释放前指向其他变量的内存地址。所以,我们发现,如果不能正确的使用指针不仅不能提高程序的执行效率,反而给我们带来了不必要的麻烦。
  指针应用千变万化, 关于指针的应用,还有很多内容值得探讨, 以上只是指针的一些基本应用, 只有在编程过程中不断总结指针的使用技巧, 通过实践中的不断摸索才能准确无误的应用指针。
参考文献:
[1] 谭浩强.C程序设计教程[M].清华大学出版社,2007.
[2] 侯永莉,王晨煜.解析C 语言的指针及应用[J].科技咨询导报,2007(12). 本文链接:http://www.qk112.com/lwfw/jsjlw/jisuanjiyingyong/241958.html

论文中心更多

发表指导
期刊知识
职称指导
论文百科
写作指导
论文指导
论文格式 论文题目 论文开题 参考文献 论文致谢 论文前言
教育论文
美术教育 小学教育 学前教育 高等教育 职业教育 体育教育 英语教育 数学教育 初等教育 音乐教育 幼儿园教育 中教教育 教育理论 教育管理 中等教育 教育教学 成人教育 艺术教育 影视教育 特殊教育 心理学教育 师范教育 语文教育 研究生论文 化学教育 图书馆论文 文教资料 其他教育
医学论文
医学护理 医学检验 药学论文 畜牧兽医 中医学 临床医学 外科学 内科学 生物制药 基础医学 预防卫生 肿瘤论文 儿科学论文 妇产科 遗传学 其他医学
经济论文
国际贸易 市场营销 财政金融 农业经济 工业经济 财务审计 产业经济 交通运输 房地产经济 微观经济学 政治经济学 宏观经济学 西方经济学 其他经济 发展战略论文 国际经济 行业经济 证券投资论文 保险经济论文
法学论文
民法 国际法 刑法 行政法 经济法 宪法 司法制度 法学理论 其他法学
计算机论文
计算机网络 软件技术 计算机应用 信息安全 信息管理 智能科技 应用电子技术 通讯论文
会计论文
预算会计 财务会计 成本会计 会计电算化 管理会计 国际会计 会计理论 会计控制 审计会计
文学论文
中国哲学 艺术理论 心理学 伦理学 新闻 美学 逻辑学 音乐舞蹈 喜剧表演 广告学 电视电影 哲学理论 世界哲学 文史论文 美术论文
管理论文
行政管理论文 工商管理论文 市场营销论文 企业管理论文 成本管理论文 人力资源论文 项目管理论文 旅游管理论文 电子商务管理论文 公共管理论文 质量管理论文 物流管理论文 经济管理论文 财务管理论文 管理学论文 秘书文秘 档案管理
社科论文
三农问题 环境保护 伦理道德 城镇建设 人口生育 资本主义 科技论文 社会论文 工程论文 环境科学