1、第 10 章 指针1.C 是一种具有低级语言功能的高级语言,它的一个重要特点就是允许在程序中引用一个变量的地址。10.1 地址和指针的概念1.内存按字节编号,每个字节的存储空间都有一个“门牌号”地址。地址是一般是 32 位的二进制数,为了表示方便,我们使用 16 进制数表示,例如:0x 0000ff1a,或写成 0000ff1aH.2. char 字符型 1 字节int 整型量 4 字节;float 单精度型 4 字节;double 双精度型 8 字节;3.地址:程序实体(如变量、数组、函数)在内存中占用一定的存储空间,这些空间都有地址。该实体的内存地址就是所占用空间的首地址。4.指针:一个变
2、量的地址。5.用于存储指针的变量叫做指针变量。10.2 变量的指针和指向变量的指针变量1.定义一个指针变量数据类型 * 指针变量名;例如: char *p; /声明 p 为指向字符型变量的指针变量int *q; /声明 q 为指向整型变量的指针变量2.两个运算符: int a=2;p=*p 则表示 p 所指向的变量,即 a;不能写*a,因为 a 不是指针变量3.指针变量的间接引用一个实体可以直接用其标识符指称,也可以使用指向它的指针指称。4.指针变量作为函数参数#includevoid main( ) void swap(int *p1, int * p2);int a, b;int *poi
3、nter_1=scanf(“%d ,%d”,if(avoid main( ) char string=I love CHINA!;printf(“%sn”,string);2. 用字符指针指向一个字符串例 10.16 定义一个字符指针变量并初始化,然后输出它指向的字符串。#include void main( ) char *string=I love CHINA!;printf(“%sn”,string);1.指针数组的定义:类型 * 数组名大小 ;例如:int * px3;指针数组中的元素都是指针。2.指针数组的初始化方法例:char *p3=“Hello”,“Fang fang,”,“H
4、ow are you?” ;指针数组的元素赋值例:char *p3;p0=“Hello”; p1=“Fang fang,”;p2=“How are you?”;10.5 指向函数的指针1.什么是函数的指针:函数是一组代码的封装体,在内存中占有一片存储单元。编译时系统分配给函数一个入口地址,可以用一个变量来存放函数的入口地址,这个变量就是指向函数的指针(函数名是代表入口地址的指针常量) 。2.指向函数的指针变量的一般定义形式:类型 ( * 指针变量名)( )定义形式:所指函数的类型 ( *指针变量名 )( ) ;注意:指向函数的指针不能用于指针的加、减运算。调用函数的形式:( *指针变量名)( 实际参数) ;10.6 返回指针值的函数1.返回指针的函数的定义格式:类型 * 函数名(形参说明表 )函数体return(指针);定义: 类型名 * 函数名 (参数表)例如: int * funP( int x, int y)指针小结int *p; p 为指向整型数据的指针变量int *pn; 定义指针数组 pint (*p)n; p 为指向含 n 个元素的一维数组的指针变量int *p( ); p 为带回一个指针的函数,该指针指向整型数据int (*p)( ); p 是指向函数的指针int *p; p 是指向指针变量的指针变量