C 语言程序设计 指针C 语言学习 重点: 1、C语言中指针的概念 2、指针变量的相关操作 3、指针与数组的关系 4、内存空间的动态分配 第1节 C 语言中指针 一、指针与指针变量 一台计算机的内存单元非常多,为了相互区分,就给它们采取编号的方法,按十进来说,从0 开始编号,即0,1,2„„,这种对每个内存单元的唯一的编号叫做内存单元的地址。计算机对内存的访问一般采取“按地址访问”的方式。 变量(指前面所讲的普通变量)的实质对应的是内存单元,对变量的操作实质是对相应内存单元中所存放的数据的操作:给变量赋一个值,实质是将一个值存入与此变量对应的内存单元;读取一个变量的值,实质是从对应的内存单元中取出存放的数据。 有时,我们要用到内存单元的地址,这种情况下,可利用 C 语言中的“指针”数据类型来实现。 指针就是变量的地址,实质是内存单元的地址。 可以用变量来存放指针,称为指针变量,但跟普通变量不同的是,普通变量存放数据,指针变量存放的是变量的地址,即内存单元的地址。 1、指针变量的定义 数据类型符 *变量名; 如: int *a,*b; float *fp; 2、指针变量的赋值 1)初始化赋值 数据类型 *指针名=初始地址值; 例: int x =20;//定义了一个普通的整型变量 int *p=&x ; //定义了一个指向整型变量的指针变量,并让p 指向变量x 所对应的内存单元,即p 中存入x 所对应的内存单元的地址。如下图: 例: int i; int *p = &i; int *q = p; 2)赋值语句赋值 int a; int *p; p = &a; 3、与指针相关的运算符 &:取地址运算符,获得变量的地址 *:访问指针所指变量内容的运算符 上例中,要获得内存单元10000 中的内容有两种办法: ①直接访问:按变量名来存取变量值。上例中可通过 x 来实现; ②间接访问:通过存放变量地址的指针变量去访问。上例中可通过*p 访问。 注意:p 代表地址而*p 代表内容。 例: 输入两个数,并使其从大到小顺序输出,用指针实现。 #include void main( ) { int a,b,*p1,*p2,*p; printf("\n 请输入两个整数:"); scanf ("%d%d",&a,&b); p1=&a; p2=&b; if(*p1<*p2) { p=p1;p1=p2;p2=p; } printf("a=%d,b=%d\n",a,b); printf("max=%d,min=%d\n",*p1,*p2); } 说明: 1、指针变量必须先定义,后赋值,最后才能使用!没有赋值的指针变量是没有任何意义的,也绝对是不允许使用的。如下例...