文章教程

全国计算机等级考试二级C语言13.4指针

8/22/2020 10:24:52 PM 人评论 次浏览

13.4 指针

考点10 指针变量的定义

一个变量的地址称为该变量的“指针”。如果有一个变量专门用来存放地址,那么这个变量就是指针变量,即存放变量地址的变量是指针变量。

指针的定义格式为:

基类型 * 指针变量名

例如:

float*a; /*a是指向float型变量的指针变量*/

char*b; /*b是指向char型变量的指针变量*/

变量的前面加上符号&(如&a),表示变量的地址,所以可以将&a赋值给一个指针。例如:

#include<stdio.h>

voidmain(){

inta=0;

int*i=&a;

}

注意:(1)虽然在定义时,用int*i定义了一个指向int类型变量的指针,但是该指针的变量名仍然是i;(2)定义指针时要在*前面声明指针的类型;(3)对指针赋值时,指针的类型应与其指向的值的类型一致;(4)对于*p=a来说,p和&a表示变量a的地址,*p和a表示变量a的值;(5)p++表示地址加1,(*p)++表示指针指向的数据加1。

题型剖析指针是C语言的重要工具,也是考试的重点,其考查形式如下

(1)指针变量的声明,特别要注意声明时候的*号。

(2)指针变量的赋值,指针变量存储的是地址,因此在考试时要注意变量的值与地址的区别。

考点11 函数之间的地址传递

在函数一章已经讲述过,传递值不修改原参数的值,但是如果原参数是一个指针,就可以修改指针指向的内存地址中所存放的数据。例如:

#include<stdio.h>

voidchange(int*);

voidmain(){

inta=0;

int*p=&a;

change(p);

printf(“%d\n”,a);

}

voidchange(int*p){

(*p)++;

}

输出结果为1。

题型剖析函数之间的地址传递在填空题和改错题中均有出现,考查形式如下。

(1)根据函数的实参,确定指针形参的类型,如:

int * p3,* p4;

swap(p3,p4);

void swap(int * p1,* p2) /* 实参与形参的类型要一致* /

(2)根据函数的形参,确定实参的变量名。

教程类别