c语言中指针运用与探索

c语言中指针运用与探索

ID:46283527

大小:66.00 KB

页数:5页

时间:2019-11-22

c语言中指针运用与探索_第1页
c语言中指针运用与探索_第2页
c语言中指针运用与探索_第3页
c语言中指针运用与探索_第4页
c语言中指针运用与探索_第5页
资源描述:

《c语言中指针运用与探索》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、C语言中指针运用与探索摘要:指针变量的运用是c语言程序设计的重要核心部分。程序屮的数据在内存中的有效读取及程序执行效率的提高多数情况取决于是否灵活使用指针。本文旨在探索c语言程序设计实践过程中如何正确操作指针变量,从而方便操作与之关联的字符串、数组、函数间数据的传递,继而解决c语言程序设计中的许多实际问题。关键词:指针变量数组字符串函数常见问题中图分类号:TP312文献标识码:A文章编号:1673-9795(2013)08(b)-0163-01指针是C语言中广泛使用的一种数据类型。运用指针编程是C语言最主要的特点之一。利用指针变

2、量可以表示各种数据结构,也能很方便地使用数组和字符串,更加能像汇编语言一样处理内存地址,[1]从而编写出精练而高效的程序。1指针变量的使用优势及常规用法(1)使用指针指向数组首地址,简化了数组相关的程序内容的书写,避免了整体使用数组,在程序执行屮减少了先找数组元素的地址再取数组元素内容的过程,直接在数组所在的地址范围内操作数组元素,提高了程序的执行效率。(2)使用指针指向字符串(即字符数组),把一个字符串整体当作一个数组元素,多个字符串的指针变量就构成了指针数组,不仅节省了内存空间,还大大地提高了程序的执行效率。(3)指向单变量

3、的指针变量作为函数参数,可以在程序执行过程中及时转向调用函数的入口。节省内存空间的同时,把指针变量替代单变量作为直接变量在调用函数执行过程屮执行相应程序操作,免去了返回值的执行时间与过程。(4)指向结构体复合变量的指针变量作为函数参数,可以通过变化结构体变量灵活使用指针变量在调用函数中执行函数的程序操作,不仅节省内存空间与执行时间,而口方便程序变量的修改,提高了程序的可移植性。(5)指向函数的指针变量作为函数的参数,可以在一个主函数中实现多个自定义函数功能间的调用,大大地提高了程序的灵活性与可移植性及程序执行的效率。(6)使用指

4、针指向文件类型结构体,可以找到与之相关的文件,实现文件的访问,在主函数执行过程中灵活转向其它文件的执行。2指针变量使用常见问题及解决方法的探求2.1指针变量的初始化同其他变量的初始化相似,在指针变量的定义之后就应该给指针变量赋一个初始的地址值。如果没有给定义的指针变量赋初值的话,指针变量的值不定,可能会导致一些隐藏在某些地址号的内存中的难以跟踪的漏洞(bug)运行。如:int*p;*p=100;P定义为一个指向整型变量的指针变量,但是却没冇给p赋予一个初始的地址值,只是把一个存储100的常量的存储单元的首地址赋给了p,而这个存储

5、单元的首地址可能在程序其它位置另作它用,就会产生隐形的难以追踪的bug的运行。因此,为了避免可能性的发生,就要和其他变量的使用一样,在定义指针变量的时候就要同时给予指针变量一个初值,以确定指针变量的初始的地址,即指针变量的初始化。将上述例子修改为:inta=100;int*p=&a;还要注意把"int*p=&a;"和“*p=&a;”混淆,前者是指针变量的初始化语句,即定义的同时给指针变量赋初值,而后者是一个旨意错误的赋值语句,把整型变量a的首地址赋给了p所指向的整型变量。2.2指针变量的赋值给指针变量赋予的初值一定是地址。同样,

6、在程序中给指针变量重新赋了的值也只能是地址或使指针变量指向同类型的变量值的首地址。如:inta,*p;p=a;要使P指向a,就要有地址运算符&对a取首地址后赋给p,或者把变量取内容赋给P,而不是直接把a赋给p。C语言编译器会提示指出这是个语法错误,给指针变量赋予的内容和指针变量不匹配。正确的赋值一般形式为:inta,*p;p二&a;或inta,*p;*p=a;还要说明的是指针的指向要有具体类型说明。不能给指针赋予与其基类型不符的地址,否则也会出现语法上错误。如:inta=100;double*p;p二&a;在给指针赋值时,不只要

7、求是地址,还要是一个与该指针类型相符的变量或常量的首地址。而上述例子中,a是整型的变量,p是基类型为双精度型的变量。二者不相匹配,这种赋值在编译时就会发生语法错误。因此,给指针变量的赋值耍注意指针变量的基类型,即指针变量能够指向的变量类型。2.3指针在函数之间值的传递#include"stdio.h"voidswap(int*a,int*b){intt;t=*a;相二*b;*b二t;}voidmain(){intx,y;printf(“请输入两个整数:”);scanf(&x,&y);printf("x=%d,y二%d”,x,

8、y);swap(&x,&y);printf("x=%d,y=%d”,x,y);}函数间的值传递也可以通过实参的地址单向传递给形参的指针变量,直接调用函数,完成函数间数据传递的目的。主函数main()在调用函数swap()的同时,把变量x和y的地址分别单向传递

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

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

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