- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言电子课件7指针
第7讲 指针简单应用 指针类型 指针类型是C语言提供的一种特殊的基本数据类型。指针类型变量中存放的不是待操作的数据,而是那些待操作数据的存储地址。 地址是用来表示数据在内存中存放位置的一种标识 地址和指针 程序对变量的读取操作实际上是对变量所在存储空间进行写入或取出数据。 变量的直接引用:通过变量名由系统自动完成变量名与其存储地址之间的转换。如b=5,系统自动将变量名转换成变量的存储位置(地址),然后再将数据5放入变量的存储空间中。 变量的间接引用:将变量的地址存放在一个变量(指针变量)中,然后通过指针变量来引用变量。 指针:一个变量的地址也称为该变量的指针(即通过地址找到变量的存储单元)。 指针变量:存放地址(指针)的变量称为指针变量(即变量里存放的是另一个变量的地址),用来指向另一个变量。 书P138页 例10.1 直接引用和间接引用示例 #include stdio.h void main() { int a,b; int *p; /* 定义指针变量p */ p=b; /* 将变量b的地址存放在变量p中 */ a=3; /* 直接引用变量a */ *p=5; /* 间接引用变量b */ printf(a=%d, b=%d\n,a,b); } 指针型变量的定义与引用 指针型变量的定义 基本格式:类型名 *指针型变量名; 类型名表示指针变量所指向的变量的类型。 例如:int *intptr; intptr = a; intptr是指针变量名,存放的是变量a的地 址,也称作intptr指向变量a。 变量名前面的“*”是一个说明符,用来说明该变量是指针变量。 指针型变量的引用 指针变量有两个有关的运算符: “” 取地址运算符(表示取得变量的地址); “*” 指针运算符(表示“指向”,*p表示指针变量p指向的变量) 例: int *p; 定义了指针变量p。定义部分的 “*”表示其后是指针变量。 p=b; p中存放的是变量b的地址,即p指向变量b *p=5; *p也就是p所指向的变量b(即b=5)。语句部分的“*”表示指针 变量所指向的具体变量。 指针引用注意: (1)指针变量是用来存放地址的,不要给指针变量赋常数值。 如 int *p;p=1000;是不对的 (2)指针变量没有指向确定地址前,不要对它所指的对象赋值。 如 int *p; *p=3; 指针的基本操作 指针的初始化 int *ptr1 = value; int *ptr2 = NULL; NULL是一个特殊的值,它表示目前指针没有指向任何变量,通常将这种状态称为“空”指针。 指针的赋值 ptr2=ptr1 可以将一个指针赋给另一个相同类型的指针,其含义是两个指针在同一时刻指向同一个变量。 指针的比较 用来判断两个指针在同一时刻是否指向同一个变量,或者判断某个指针是否为“空”。 例如 if (ptr1==NULL) return; 指针变量作为函数参数 指针与一维数组的关系 数组名表示数组的首地址,即数组第1个元素的地址,是一个常量指针,不是变量,所以它的值不变的。 例:a[i]等价于*(a+i) 利用指针变量可以改变其中的值(地址)。指向数组名的指针可以方便的引用数组元素。例:int *ptr, iarray [10]; ptr=iarray ; 这样一来, *(ptr+1)就等价于iarray[1](c语言规定:如果指针变量ptr已指向数组中的一个元素,则ptr+1指向同一数组中的下一个元素,而不是ptr值简单地加1。) 因为a是指针常量,ptr是指针变量,所以语句a++是不正确的,ptr++是可以的。引用数组元素用指针法往往能使目标程序质量高(占内存少,运行速度快)。 指针与字符串 字符串是一种以字符’\0’作为结束标志的字符数组。 可以使用指向字符数组的指针变量来实现字符串的操作。 char *str2 = “Hello”; str2是一个指向字符串常量的指针 也可以写成:char *string; string=“Hello”; 但不能写成:char *string; *string=“Hello”; (一个字符指针变量只能指向一个字符型数据,不能把字符串全部放到指针变量中。) 返回指针值的函数 形
文档评论(0)