资源预览内容
第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
亲,该文档总共4页全部预览完了,如果喜欢就下载吧!
资源描述
8.1 指针与指针变量的概念,指针与地址运算符1.在 C 语言中,指针是指一个变量的地址,通过变量的地址 指向 的位置找到变量的值,这种 指向 变量地址可形象地看作 指针 。用来存放指针的变量称为指针变量,它是一种特殊的变量,它存放的是地址值。2.定义指针变量的一般形式为:类型名*指针变量 1,*指针变量 2,; 类型名 称为 基类型 它规定了后面的指针变量中存放的数据类型,*号表明后面的 指针变量 1 , 指针变量 2 等是指针变量, *号在定义时不能省略,否则就会变成一般变量的定义了。 指针变量 1 , 指针变量 2等称为指针变量名。3.一个指针变量只能指向同一类型的变量。4.与指针和指针变量有关的两个运算符:(1)* :指针运算符 (或称 间接访问 运算符 ) (2)& :取地址运算符通过 *号可以引用一个存储单元,如有如下定义:int i=123,*p,k; 则 p=&I; 或 k=*p; 或 k=*&I; 都将变量i 中的值赋给k。*p=10; 或*&i=10; 都能把整数10 赋给变量i。这里,等号左边的表达式*p 和*&i 都代表变量i 的存储单元。8.2 变量、数组、字符串、函数、结构体的指针以及指向它们的指针变量1.变量的指针和指向变量的指针变量。2.数组的指针和指向数组的指针变量。所谓数组的指针是指数组的起始地址,数组元素的指针是数组元素的地址。C 语言规定数组名代表数组的首地址,也就是第一个元素的地址。3.字符串的指针和指向字符串的指针变量。我们可以通过定义说明一个指针指向一个字符串。C 语言将字符串隐含处理成一维字符数组,但数组的每个元素没有具体的名字,这一点跟字符数组不一样。要引用字符串中的某个字符,只能通过指针来引用:*(s+0),*(s+1),*(s+n) 。4.函数的指针和指向函数的指针变量。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 4 页指向函数的指针变量的一般形式为:数据类型标识符(* 指针变量名 )();这里的 数据类型标识符 是指函数返回值的类型。函数的调用可以通过函数名调用,也可以通过函数指针调用(即用指向函数的指针变量调用)。指向函数的指针变量表示定义了一个指向函数的指针变量,它不是固定指向哪一个函数,而只是定义了这样的一个类型变量,它专门用来存放函数的入口地址。在程序中把哪一个函数的地址赋给它,它就指向哪一个函数。在一个程序中,一个指针变量可以先后指向不同的函数。在给函数指针变量赋值时,只需给出函数名而不必给出参数。因为函数指针赋的值仅是函数的入口地址,而不涉及到实参与形参的结合问题。对指向函数的指针变量,表达式p+n,p+,p- 等都无意义。5.结构体的指针与指向结构体的指针变量一个结构体变量的指针就是该变量所占据的内存段的起始地址。可以设一个指针变量,用来指向一个结构体变量,此时该指针变量的值是结构体变量的起始地址。指针变量也可以用来指向结构体数组中的元素。8.3 用指针做函数参数函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针类型,它的作用是将一个变量的地址传送到另一个函数中。8.4 返回指针值的指针函数一个函数可以返回一个整型值、字符值、实型值等,也可以返回指针型数据,即地址这种带回指针值的函数,一般的定义形式为:类型标识符*函数名 (形参表 );8.5 指针数组、指向指针的指针1.指针数组指的是一个数组,其元素均为指针类型数据,也就是说,指针数组中的每一个元素都是指针变量。指针数组的定义形式为:类型标识*数组名数组长度说明指针数组可以使字符串处理更加方便。2.指向指针的指针是指指向指针数据的指针变量,一个指向指针数据的指针变量的一般形式为:类型标识* *p; 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 4 页8.6 main 函数的命令参数指针数组的一个重要应用是作为main 函数的形参, 一般来说, main 函数后的括号中是空的,即没有参数。实际上 main 可以有参数,如:main(argc,argv) 其中, argc 和 argv 就是 main 函数的形参。其他函数形参的值可以通过函数调用语句的实参中得到,由于main 函数是由系统调用的,因而main 函数的形参值不能从程序中得到,但可以在操作系统状态下,将实参和命令一起给出,从而使main 函数的形参得到值。命令行的一般形式为:命令名参数 1 参数 2 参数 n 命令名和各参数之间用空格分隔开。8.7 动态存储分配在 C 语言中有一种称为“ 动态存储分配 ” 的内存空间分配方式:程序在执行期间需要存储空间时,通过“ 申请” 分配指定的内存空间;当闲置不用时,可随时将其释放,由系统另作它用。本节介绍C 语言中动态分配系统的主要函数: malloc() 、calloc() 、free()及 realloc(),使用这些函数时,必须在程序开头包含文件stdlib.h 。1.主内存分配函数 malloc() 函数格式: void*malloc(unsigned size); 函数功能:从内存中分配一大小为size 字节的块。参数说明: size 为无符号整型,用于指定需要分配的内存空间的字节数。返回值:新分配内存的地址,如无足够的内存可分配,则返回NULL 。说明:当 size 为 0 时,返回 NULL 。2.主内存分配函数 calloc() 函数格式: void*malloc(unsigned n,unsigned size); 函数功能:从内存中分配n 个同一类型数据项的连续存储空间,每个数据项的大小为size字节。参数说明: n 为无符号整型,用于指定分配的数据项的个数size为无符号整型,用于指定需要分配的数据项所占内存空间的字节数。返回值:新分配内存的地址,如无足够的内存可分配,则返回NULL 。3.重新分配内存空间函数 realloc() 函数格式: void*realloc(void *block,unsigned size); 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 4 页函数功能:将block 所指内存区的大小改为size字节的块。参数说明: block 为 void 类型的指针,指向内存中某块,size 为无符号整型,用于指定需要分配的内存空间的字节数。返回值:新分配内存的地址,如无足够的内存可分配,则返回NULL 。4.释放内存函数 free() 函数格式: void free(void*block); 函数功能:将calloc()、malloc()及 realloc()函数所分配的内存空间释放为自由空间。参数说明: block 为 void 类型的指针,指向要释放的内存空间。返回值:无。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 4 页
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号