欢迎来到天天文库
浏览记录
ID:15998797
大小:195.00 KB
页数:48页
时间:2018-08-07
《c语言基础教程 第七章 指针》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第七章指针7.1.1什么是指针 指针是一种特殊的变量。它的特殊性表现在哪些地方呢?由于指针是一种变量,它就应该具有变量的三要素:名字、类型和值。于是指针的特殊性就应表现在这兰个要素上。指针的名字与一般变量的规定相同,没有什么特殊的地方。指针的值是某个变量的地址值。因此我们说指针是用来存放某个变量地址值的变量。指针的值与一般变量的值是不同的,这是指针一个特点。这就是说,指针是用来存放某个变量的地址值的,当然被存放地址值的那个变量是已经定义过的,并且被分配了确定的内存地址值的。一个指针存放了哪个变量的地址值,就说该指针指向那个变量。指针的第二个特点就表现在它的
2、类型上,指针的类型是该指针所指向的变量的类型,而不是指针本身值的类型,因为指针本身值是内存的地址值,其类型自然是int型或lang型。而指针的类型是由它所指向的变量的类型决定。由于指针可以指向任何一种类型的变量3、符,它说明后面的变量不是一般变量,而是指针,并且P是一个int型指针,意味着P所指向的变量是一个int型变量。假定,要指针P指向变量a,由于指针是用来存放变量的地址值的,因此,要将变量a的地址贼给指针P,变量a的地址表示为肠,这里邑是运算符,表示取其后面变量的地址值。如果有 p=&a; 则P是指向变量a的指针。假定a被分配的内存地址是3000h,P和a的关系如下图所示: 图中标明变量a的内存地址为30O0,变量P的内存地址为3500H,变量a的值(即内容)为5,而指针P的值为3000H,可见指针P是用来存放变量a的地址值的。 C语言中关于地址4、值的表示有如下规定: (1)一般变量的地址值用变量名前加运算符&表示。例如,变量x的地址值为&x等。 (2)数组的地址值可用数组名表示,数组名表示该数组的首元素的地址值。数值中某个元 素的地址值用&,运算符加上数组元素名。例如: inta[10],*p1,*p2; P1=a; p2=&a[5]; 这里,*p1和*p2是指向int型变量的指针,pl=a;表示指针P1指向a数组的首元素;P2=&a[5];表示指针p2指向数组a的数组元素a[5]的指针。 (3)函数的地址值用该函数的函数名来表示,指向函数的指针可用它所指向的函数名来5、赋值。 (4)结构变量的指针用尽运算符加结构变量名来表示,结构变量的成员的地址也用邑运 算符加结构变量的成员名来表示。关于结构变量和结构变量的成员将在"结构"一章中讲解。 关于&运算符的用法需要注意的是它可以作用在一般变量名前、数组元素名前、结构变量名前和结构成员名前等,而不能作用在数组名前,也不能作用在表达式前和常量前。 综上所述,对指针的含意应作如下理解:指针是一种不同于一般变量的特殊变量,它是用来存放某个变量的地址值的,它存放哪个变量的地址就称它是指向那个变量的指针。指针的类型不是它本身值的类型,而是它所指向的变量的类型。简单地说,对指6、针应记住如下两点: (1)指针的值是地址值。 (2)指针的类型是它的所指向变量的类型。7.1.2指针的表示 在明确了指针的含意以后,接着要学会正确地表示指针。 它在表示上也有差别。应记住各种不同类型指针的表示。 (1)指向基本类型变量的指针表示如下: ①指向int型变量的指针。例如: int *pI,p2; 这里,P1和p2是两个指向整型变量的指针,p1和p2前的*是表示指针的说明符。 ②指向。har型变量的指针,例如: char*pcl,*pc2; 这里,pcl和pc2是两个指向字符型变量的指针。 ③指向flo7、at型变量的指针,例如: float*pf1,*pf2, double*pdl,pd2; 这里,pfl和pf2是两个指向单精度浮点型变量的指针。pdl和pd2是两个指向双精度浮点型变量的指针。 (2)指向数组的指针表示如下: ①一般地,认为指向数组的指针就是指向该数组首元素的指针,例如: inta[5][3],(*pa)[3]; 其中,a是一个二维数组的数组名,pa是一个指向数组的指针名。pa是一个指向每列有3个元素的二维数组的指针。例如, Pa=a; 则表示指针pa指向二维数组a指向数组的指针的表示与指针数组的表示很相似8、,使用时要注意其区别。例如: floatm[3]
3、符,它说明后面的变量不是一般变量,而是指针,并且P是一个int型指针,意味着P所指向的变量是一个int型变量。假定,要指针P指向变量a,由于指针是用来存放变量的地址值的,因此,要将变量a的地址贼给指针P,变量a的地址表示为肠,这里邑是运算符,表示取其后面变量的地址值。如果有 p=&a; 则P是指向变量a的指针。假定a被分配的内存地址是3000h,P和a的关系如下图所示: 图中标明变量a的内存地址为30O0,变量P的内存地址为3500H,变量a的值(即内容)为5,而指针P的值为3000H,可见指针P是用来存放变量a的地址值的。 C语言中关于地址
4、值的表示有如下规定: (1)一般变量的地址值用变量名前加运算符&表示。例如,变量x的地址值为&x等。 (2)数组的地址值可用数组名表示,数组名表示该数组的首元素的地址值。数值中某个元 素的地址值用&,运算符加上数组元素名。例如: inta[10],*p1,*p2; P1=a; p2=&a[5]; 这里,*p1和*p2是指向int型变量的指针,pl=a;表示指针P1指向a数组的首元素;P2=&a[5];表示指针p2指向数组a的数组元素a[5]的指针。 (3)函数的地址值用该函数的函数名来表示,指向函数的指针可用它所指向的函数名来
5、赋值。 (4)结构变量的指针用尽运算符加结构变量名来表示,结构变量的成员的地址也用邑运 算符加结构变量的成员名来表示。关于结构变量和结构变量的成员将在"结构"一章中讲解。 关于&运算符的用法需要注意的是它可以作用在一般变量名前、数组元素名前、结构变量名前和结构成员名前等,而不能作用在数组名前,也不能作用在表达式前和常量前。 综上所述,对指针的含意应作如下理解:指针是一种不同于一般变量的特殊变量,它是用来存放某个变量的地址值的,它存放哪个变量的地址就称它是指向那个变量的指针。指针的类型不是它本身值的类型,而是它所指向的变量的类型。简单地说,对指
6、针应记住如下两点: (1)指针的值是地址值。 (2)指针的类型是它的所指向变量的类型。7.1.2指针的表示 在明确了指针的含意以后,接着要学会正确地表示指针。 它在表示上也有差别。应记住各种不同类型指针的表示。 (1)指向基本类型变量的指针表示如下: ①指向int型变量的指针。例如: int *pI,p2; 这里,P1和p2是两个指向整型变量的指针,p1和p2前的*是表示指针的说明符。 ②指向。har型变量的指针,例如: char*pcl,*pc2; 这里,pcl和pc2是两个指向字符型变量的指针。 ③指向flo
7、at型变量的指针,例如: float*pf1,*pf2, double*pdl,pd2; 这里,pfl和pf2是两个指向单精度浮点型变量的指针。pdl和pd2是两个指向双精度浮点型变量的指针。 (2)指向数组的指针表示如下: ①一般地,认为指向数组的指针就是指向该数组首元素的指针,例如: inta[5][3],(*pa)[3]; 其中,a是一个二维数组的数组名,pa是一个指向数组的指针名。pa是一个指向每列有3个元素的二维数组的指针。例如, Pa=a; 则表示指针pa指向二维数组a指向数组的指针的表示与指针数组的表示很相似
8、,使用时要注意其区别。例如: floatm[3]
此文档下载收益归作者所有