- 1、本文档共100页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章 指 针 ●指针基础 ●指针与数组 ●指针与函数 6.1 指针基础 6.1.1 指针就是地址 1. 程序实体的内存地址 一个程序一经编译,在其执行过程中,就会为变量、数组以及函数分配存储空间。这些变量、数组、函数都称为程序实体,也具有某一种数据类型。这些被分配了内存空间的程序实体,都具有自己的内存地址。 #include stdio.h int main(void) { int i1,i2; float f1,f2; double d1,d2; printf(数据大小:int,%d;float,%d;double,%d\n, sizeof(i1),sizeof(f1),sizeof(d1)); /* 输出类型宽度 */ printf(%ld,%ld\n,i1,i2); /* 输出变量地址 */ printf(%ld,%ld\n,f1,f2); printf(%ld,%ld\n,d1,d2); return 0; } 解释: (1)变量存储空间的分类顺序:先声明的后分配;撤销的顺序与之相反:先建立的后撤销。这种机制就称为栈机制,好像往一个只能允许进出一个盘子的桶里放盘子,先放进的后拿出。在C语言程序中,局部变量就是被分配在栈区的,并且是以高端为栈底建立的。所以后建的变量的地址小。 (2)每个变量只有一个地址,但占用的空间不同。空间的大小因类型而异。同时,数据的存储方式也不同,如实型数据采用浮点存储,而整型数采用定点存储。 2. 指针的概念 从根本上说,目标程序是按照地址访问这些程序实体的。C语言不仅提供了用变量名访问内存数据的能力,还提供了直接使用内存地址访问内存数据的能力。这个内存地址就称为指针。它好像一个指路标指向要访问的内存数据。 6.1.2 指针变量及其定义 1. 指针变量的概念 变量可以用来存放数值(如整数、实数等),也可以用来存放地址(另一个变量的地址),这种专门用于存储指针(地址)的变量就称为指针变量。 2. 指针变量的定义 在定义指针变量时,需要用指针声明符*表示此变量不是一般的变量,而是用来存放其他变量地址的指针变量。由于每一个变量都是属于一个特定类型的,因此在定义指针变量时,需要声明该变量的类型,以便能通过指针能正确访问特定类型的数据。 定义一个指针的语法格式为: 基类型标识符 * 指针变量名; 6.1.2 指针变量及其定义 int * pi1,*pi2; double *pd1,*pd2; 说明: (1)“基类型”,就是指针要指向的数据的类型。 (2)定义指针变量时,在指针变量名前加符号“*”。“*”称为指针声明符,用于说明它后面的名字是一个指针变量名。例如语句: int i1,i2,*pi1,*pi2; 定义了两个数据变量i1和i2,还定义了两个指向int类型的指针pi1和pi2。 3. 指针变量的初始化和赋值 和其他变量一样,指针变量也可以初始化。可以用变量的地址对指针变量进行初始化,但必须注意:该变量的类型必须和指针变量的基类型相同。也可以用一个指针变量的值给另一个指针变量赋值,但它们应该具有相同的基类型。例如: int i1,i2,i3; int *pi1=i1,*pi2=i2; pi1=i3; pi2=pi1; 注意,不要将一个变量的值赋给指向它的指针变量。例如 pi1=i1;或pi2=i1; 都是错误的。应该是将变量的地址赋给指向它的指针变量。如: pi1=i1;或pi2=i1; 6.1.3 指针变量的引用 1. 引用指针变量 当一个指针变量被初始化或被赋值后,它就指向一个特定的变量。这时,就可以使用指针访问它所指向的内存空间。在C语言中使用指针访问它所指向的内存空间的方法是在指针变量名前加一个“*”号。例如 int i,*pi; pi = i; *pi=5; 此处的“*”是“指针运算符”。又称为“间接访问运算符”,它作用于指针变量。*pi表示指针变量pi所指向的存储空间,即变量i。*pi相当于变量i。 2. 使用指针变量需要注意的问题 (1)使用指针,首先应当区分指针变量与它所指向的存储单元之间的不同。 #include stdio.h int main(void) { int i1=10,i2=20,*p,*p1,*p2; p1=i1;p2=i2; printf (“i1=%d,*p1=%d;i2=%d,*p2=%d\n”,i1,*p1,i2,*p2); p=p1;p1=p2;p2=p; printf (“i1=%d,*p1=%d;i2=%d,*p2=%d\n”
您可能关注的文档
- 总结中国新闻事业简史.doc
- 最全经典英文广告语文案收录.doc
- 最全英语六级高频词汇-2011.doc
- 最全最方便的中国近代史纲要.doc
- 《建筑法》及其配套法规.ppt
- 《美学概论》复习纲要.ppt
- 《生产、劳动与经营》课件曹正国.ppt
- 《市场配置资源》曹正国.ppt
- 《应用化学》.ppt
- 必威体育精装版_四级网络工程师_复习题1.doc
- 初中语文新部编版七年级上册第一单元核心素养教案(2024秋).doc
- 小学数学新西师版一年级上册第四单元10~20的认识《认识10~20》第4课时教学课件(2024秋).pptx
- 小学数学新西师版一年级上册第二单元 0~9的加减法《连加、连减与加减混合》第3课时教学课件(2024秋).pptx
- 小学数学新西师版一年级上册第一单元 0~9的认识《第几》第1课时教学课件(2024秋).pptx
- 小学数学新西师版一年级上册第一单元 0~9的认识《认识0~9》第1课时教学课件(2024秋).pptx
- 初中语文新部编版七年级上册第三单元核心素养教案(2024秋).doc
- 初中语文新部编版七年级上册第1课《春》核心素养教案(2024秋).doc
- 小学数学新西师版一年级上册第五单元20以内的进位加法《进位加法》第2课时教学课件(2024秋).pptx
- 小学数学新西师版一年级上册第五单元20以内的进位加法《进位加法》第1课时教学课件(2024秋).pptx
- 小学数学新西师版一年级上册第五单元20以内的进位加法《进位加法》第6课时教学课件(2024秋).pptx
文档评论(0)