C语言的指针

时间:2024-04-18 点赞:43226 浏览:80372 作者原创标记本站原创

本文是一篇变量论文范文,变量相关毕业论文格式,关于C语言的指针相关大学毕业论文范文。适合变量及指针及数组方面的的大学硕士和本科毕业论文以及变量相关开题报告范文和职称论文写作参考文献资料下载。

摘 要:C语言作为计算机类专业一门重要的基础课程,是学生学习程序设计的开端,后续专业课程大多以此作为前提.而在C语言的学习中,指针又是一个重点以及难点.文章首先介绍了指针的概念以及指针变量的定义,其次重点介绍了指针与数组之间的关系,最后介绍了值传递以及地址传递的区别以及指针变量作为函数参数的应用.

关 键 词:C语言,指针,指针变量,地址传递

中图分类号:TP312文献标识码:A文章编号:16727800(2012)008004302

作者简介:卫五波(1981-),男,硕士,四川邮电职业技术学院助理讲师,研究方向为Web应用和网络通信;陈冬(1981-),男,硕士,四川邮电职业技术学院助理讲师,研究方向为移动游戏平台和中间件系统.

1指针与指针变量

1.1指针

C语言中,任何数据都会占用内存单元的.计算机内存的每个存储位置都对应唯一的存储地址,而变量名作为变量数据存储区域所取的名字,代表的是一个内存编号,而这个内存编号对于用户来说是未知的.如定义:inta等于12.

变量名a代表某个内存单元,而变量值12则是这块内存单元里面的内容.在整个程序运行过程中,通过变量名来访问变量,变量名a所代表的这块内存单元不变,所改变的只是这块内存单元里面的值.

C语言也支持使用变量存储地址来对变量进行存取操作,要取得变量的存储地址,可使用取地址运算符&,如&a表示变量a的存储地址;而变量的存储地址就是指针.

1.2指针变量

指针类型就是C语言中用于表示存储地址的数据类型,而专门用来存放变量存储地址的变量则称为指针变量.

格式:数据类型*指针变量名.跟普通变量不同的是,所有指针变量占用的内存单元大小是一样的,前面的数据类型代表的是指针变量所指向变量的数据类型.如以下代码:

inta,*b,//a是一个int型变量,b是一个指向int型数据的指针变量

b等于&a,//代表b指向a

下面代码是错误的:

floata,

int*b等于&a//此条语句有误,b只能指向int型变量

为了访问指针变量所指向变量的值,可以通过间接访问运算符*,如:

inta等于12,*b等于&a,

*b就代表取出b所指向变量a的值,也就是*b等于*(&a)等于a.

1.3二级指针变量

在C语言中,任何值都有所对应的内存地址,上述介绍的指针变量是指向普通变量的,也就是普通的指针,称为一级指针变量.

还有一种指针变量所指向的变量不是普通变量反而还是一个指针变量,这种变量称为二级指针变量.如:

inta等于12,//普通变量a

int*b等于&a,//一级指针变量b,指向普通变量a

int*c等于&b,//二级指针变量c,指向指针变量b

而这时,*c只是代表取c所指向的变量b里面的值:&a,而a的地址又是未知的.所以,对于二级指针变量c,要想取出a的值,必须需要两个间接访问运算符**,如**c等于**(&b)等于*b等于*(&a)等于a.

2指针与数组的关系

2.1指针与一维数组

数组元素在内存中是顺序存放的,并且数组名代表的是这一块内存单元的首地址,数组其他元素的地址可以根据每个元素所占用的内存单元依次推知.因此,一维数组的数组名实际上就是该数组的指针.如以下定义:


inta\[10\]等于{1,2,3,4,5},int*p等于a;

此时,p指向数组中的第1个元素(a\[0\]),p+1指向第2个元素(a\[1\]),依次类推.当然,p最开始也可以指向其他元素,如指向第4个元素:p等于&a\[3\],

在指针的运算中,经常会跟自增或自减运算符结合起来使用,如以下代码:

inta\[\]等于{20,21,22,23,24,25,26,27,28,29},

int*p,i,

p等于&a\[4\],//p初始指向第5个元素

printf("%d\n",*(++p)),/*由于自增运算符在前,所以p先指向a\[5\],之后输出为25*/

printf("%d\n",(*p)++),/*先输出p指向的内容25,之后再把指向的内存单元的内容加1,也就是a\[5\]的值变为26,p的指向不变/

printf("%d\n",*(--p)),/*先改变p的指向,指向a\[4\],之后输出a\[4\]的内容24*/

printf("%d\n",--(*p)),/*先把p所指向的a\[4\]的内容减1,变为23,之后输出23*/

for(i等于0,i<10,i++)

printf("%4d",a\[i\]),/*输出结果为20212223232626272829*/

printf("\n"),

上述代码就是指针与数组之间关系的一个典型示例,通过自增或自减运算符不光改变p的指向,也可以改变p所指向的内存单元里面的内容(也就是数组元素的内容).

2.2指针与二维数组

由于二维数组可以看成是多个一维数组,如以下定义:inta\[3\]\[4\],可以把二维数组a看成3个长度为4的一维数组a\[0\],a\[1\],a\[2\](假定二维数组按行存储);a\[0\]为第一个一维数组的数组名,里面有4个元素:a\[0\]\[0\],a\[0\]\[1\],a\[0\]\[2\],a\[0\]\[3\];a\[1\]和a\[2\]依次类推.此时,虽然二维数组名a和&a\[0\]\[0\]表示的是同一个地址,但是指向的却是完全不同的两种存储区域.a指向的是一维数组a\[0\]中4个元素的存储区域的首地址,&a\[0\]\[0\]指向第一个元素a\[0\]\[0\]的地址.此时的a相当于二级指针,a等价于&a\[0\],而a\[0\]又等价于&a\[0\]\[0\],所以**a才等价于a\[0\]\[0\],*a只是a\[0\],而a\[0\]还是地址,此值对于用户来说是未知的.如以下代码:

相关论文

C语言指针

本文是一篇指针论文范文,指针方面学士学位论文,关于C语言指针相关毕业论文开题报告范文。适合指针及变量及数据结构方面的的大学硕士和本科。

c语言毕业文致谢范例

为您写身体健康毕业论文和职称论文提供身体健康相关大学毕业论文范文,与c语言毕业文致谢范例相关论文范文,包括关于身体健康及公司实习及科。

C语言程序设计教学方法

该文为关于实验教学相关研究生毕业论文开题报告范文,与C语言程序设计教学方法相关毕业论文格式,可作为论文格式专业实验教学论文写作研究的。

C++语言实验教学的探究

这篇实验教学论文范文属于地理教学免费优秀学术论文范文,实验教学方面有关毕业论文开题报告范文,与C++语言实验教学的探究相关教育教学论文。

计算机C语言编辑程序技巧

为您写计算机技术毕业论文和职称论文提供计算机技术类毕业论文的格式范文,与计算机C语言编辑程序技巧相关论文范文数据库,包括关于计算机技。

C语言学习过程中编程技巧的应用

此文是一篇语言论文范文,关于语言类论文例文,与C语言学习过程中编程技巧的应用相关毕业论文模板。适合不知如何写语言及学生及技巧方面的论。

基于C语言的哈夫曼编码的实现

本文关于数据结构及参考文献及工程技术方面的免费优秀学术论文范文,数据结构方面有关论文例文,与基于C语言的哈夫曼编码的实现相关学士学位。