1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C8-指针-PPT

第8章 指针 C语言最有特色、最灵活、最重要,也是最难的部分。 需要综合以前学过的所有内容。 指针的作用: 利用指针可直接对内存中各种不同的数据结构进行快速访问和处理; 能为函数间各类数据的传递提供了非常有效的手段; 能动态分配内存; 能直接处理内存地址。 C语言的指针既可以指向一般变量、数组变量、结构变量及共用体变量,也可以指向函数。正确地使用指针能够有效地表示和处理复杂的数据结构,更加灵活地处理各类复杂问题。 内存单元的地址和内容 int a,b,c; a=10,b=20,c=30; int *p; p=a; p=b; printf(%d,%d%da,b,c); 指针的基本概念 内存单元 一定要分清内存单元的地址和内存单元的内容这两个概念 根据内存单元的地址可以访问其内容 内存单元的内容,以新换旧 指针:内存单元的地址 指针值一定是整数 指针变量:专门用来存放指针(即内存单元地址值)的变量 指针变量的定义 C语言要求所有的变量必须先定义后使用,指针变量也不例外,在使用指针变量之前必须先定义。 指针变量的定义形式如下: 类型说明符 *指针变量名[,*指针变量名,…]; “类型说明符”表示指针变量所指向的变量的类型。“*”表示定义指针变量。方括号[ ]中为可选项,表示可同时定义多个指向同类型的指针变量。指针变量名的命名规则与定义标识符的规则相同。一个指针变量只能指向同一种类型的变量,即该指针变量只能存放同一种类型的变量的地址。也就是说,我们不能定义一个指针变量,使得它既能指向整型变量又能指向实型变量。例如: float *fp1,*fp2; 表示fp1和fp2都是指向实型变量的指针变量,这也就意味着在程序中可以用它们来间接访问实型变量。 指针变量的初始化 指针变量与其它简单变量一样,使用之前也要初始化。对所定义的指针变量赋初值使其具有确定的地址值,叫做指针变量的初始化。在定义指针变量的同时给其赋初值是最常见的指针变量初始化方法,一般形式为: 类型说明符 *指针变量名=初始地址值; 其中,“类型说明符”和“*指针变量名”的含义同前面指针定义中的说明,而“初始地址值”是一个具有“类型说明符”类型的变量的首地址值。 例如: int x=10,y=20,z=30; char s[10]=Hello!; double d=1.35; int *px=x; char *ps=s; double *pd=d; 或简写为: int x=10,*px=x;或*px=y; *px=z; char s[10]=Hello!, *ps=s; double d=1.35, *pd=d; 指针变量的特点 1. 指针变量也是变量。 2. 既然是变量,所以指针变量可以存放数值,但指针变量只能存放地址值。虽然地址值也是一个整数,但指针变量只能存放地址值,即其内容只能是一个地址值,而不能存放一般的整数。 3. 地址值只能存放在指针变量中。虽然地址值也是整数,但是不能存放在普通的整型变量中,因为普通的整型变量只能存放一般的整数,而指针变量专门用来存放地址值。 4. 既然指针变量是变量,则其值也可以改变。如p既可存放整型变量a的地址,也可改为存放整型变量b或c的地址,即p也可以指向变量b或c。此外指针变量也要占据内存单元,用以存放地址值。既然指针变量也要占据内存单元,所以指针变量本身也有地址,即指针变量占据内存单元的地址,如指针变量p的地址为3000。至于一个指针变量占据多少字节的存储单元,各个系统不太相同。可以看出,一个指针变量占据的字节数越多,则其中所能存放的地址值就越大,因此就能访问越大范围的内存空间。在TC中,一个指针变量一般占据2个字节,即其所能访问的内存空间为64KB(28*2个字节)。 注意指针和指针变量这两个概念的区别。指针实际上就是一个地址值,而指针变量则是专门用来存放指针(地址值)的变量。 指针变量进行初始化注意事项 1.这里的初始化是对指针变量的初始化,而不是对指针变量所指向的变量进行初始化。上面的三个指针初始化例子中,是把目标变量的地址x、s和d分别赋给了指针变量px、ps和pd,而不是赋给指针变量所指向的目标。 2.指针变量所指向的变量的数据类型必须与定义指针变量的数据类型相一致。例如: double x; int *px=x; 的初始化是错误的,因为类型不一致。 3.可以把一个指针变量的值赋给另一个指针变量。例如: int x; int *p1=x; int *p2=p1; 是正确的初始化,即指针变量p1和p2都初始化为指向实型变量x。注意类型必须一致。 4.在初始化时,不要把一般的整型数据赋给指针,如果把一般整数

文档评论(0)

qwd513620855 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档