准备计算机二级 C 语言考试的你,是不是一看到指针题就发怵?选择题里总在指针和数组的关系上栽跟头,编程题里一涉及指针传参就写不下去,明明花了时间学,可一到考试还是拿不到分。其实啊,二级考试里的指针考点就那么些,把高频的吃透了,这部分分数稳稳到手。今天兔子哥就从基础到进阶,给你扒一扒这些考点,还带真题练习,一起往下看吧!
基础考点:指针的定义与基本操作 —— 考得最多的送分题
啥是指针的基础考点?说白了就是指针变量的定义、赋值、取值这些最基本的操作。二级考试里,选择题至少有 1-2 道考这个,考的就是你会不会用 “*” 和 “&”。
比如问你 “int p, a=5; p=&a 则p 的值是多少”,这题就是送分的,p 就是 a 的值 5。可为啥还有人错?多半是把 “” 和 “&” 搞混了。记住,“&a” 是取 a 的地址,“*p” 是取 p 指向的变量的值,就这么简单。
要是这部分基础没打牢会怎样?后面的进阶题根本没法做。就像盖房子,地基没打好,上面的楼层肯定不稳。二级考试里,很多考生就是因为指针定义都搞不清,后面的题直接放弃,白白丢分。
进阶考点一:指针与数组的结合 —— 几乎年年考的重点
指针和数组放在一起考,是二级考试的重头戏,编程题里十有八九会涉及。比如给个数组,让你用指针遍历元素,或者找出最大值最小值。
看一道真题:“若有定义 int a [5]={1,2,3,4,5}, p=a; 则(p+2) 的值是多少”。这里 p 指向 a [0],p+2 就指向 a [2],所以 *(p+2) 就是 3。这类题考的是 “指针移动与数组下标的对应关系”,记住 “*(p+i) 等价于 a [i]” 就行。
怎么做才能拿下这部分分数?多练!把数组用指针遍历、修改元素这些操作写成代码,多敲几遍就熟了。兔子哥当年考二级时,光这类型的题就练了 20 多道,考试时一眼就看出答案了。
进阶考点二:指针与函数传参 —— 编程题常考的难点
二级考试的编程题里,指针传参是绕不开的。比如让你写个函数,用指针实现两个数的交换,或者修改外部变量的值。
有道真题是这么考的:“下列函数中,能正确交换主函数中两个变量值的是?” 选项里一个是值传递(void swap (int a,int b)),一个是地址传递(void swap (int *a,int *b))。答案肯定是后者,因为值传递改的是副本,地址传递才能改原变量。
要是搞不懂这个会怎样?编程题直接零分。二级考试编程题占分不低,这部分丢了,想及格就难了。所以一定要记住:想在函数里改外面的变量,必须用指针传地址。
真题练习:来试试这两道高频题
光说不练假把式,来两道真题练练手:
- 选择题:若有定义 int x=3, *p=&x 则下列语句中错误的是( )
A. *p = x; B. &*p = &x C. *&x = *p; D. p = *&x
解析:D 错。&x 其实就是 x(先取地址再取值),p 是指针,不能把 int 型的 x 赋值给指针 p。这题考的是 “” 和 “&” 的嵌套使用,二级里常考这种绕一点的。 - 编程题:请编写函数,用指针实现将数组中的元素逆序排列。
思路:定义两个指针,一个指向数组首元素,一个指向尾元素,交换它们指向的值,然后首指针后移、尾指针前移,直到相遇。
代码大概是这样:
void reverse (int *arr, int n) {
int *left = arr;
int *right = arr + n - 1;
while (left < right) {
int temp = *left;
*left = *right;
*right = temp;
left++;
right--;
}
}
备考建议:这样复习指针考点更高效
二级考试复习时间有限,怎么才能高效拿下指针考点?兔子哥给你几个建议:
- 先把基础概念吃透,定义、赋值、* 和 & 的用法,这些是根本。
- 针对高频考点刷题,尤其是指针与数组、函数传参的结合题,至少各练 10 道。
- 做真题时别只看答案,要想清楚 “这题考的是哪个考点”,比如看到数组和指针一起出现,就知道考的是对应关系。
- 编程题一定要亲手写,别觉得看懂了就行,写的时候才知道哪里容易错,比如指针越界、忘了解引用。
其实二级考试里的指针题,看着难,实际考的都是固定套路。把这些高频考点搞懂,多做几道真题,考试时根本不用慌。兔子哥当年就是这么复习的,指针部分几乎没丢分。
最后想跟你说,别害怕指针,它就是个纸老虎。二级考试考的都是基础和进阶的固定考点,只要针对性复习,肯定能拿下。赶紧找些真题练起来,祝你考试顺利通过!
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~