第8章 第43练 指向简单变量的指针《编程语言基础-C语言》(高教版第5版)一课一练

2026-05-08
| 2份
| 5页
| 37人阅读
| 0人下载

内容正文:

编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《编程语言基础-C语言》(高教版第5版)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《编程语言基础-C语言》(高教版第5版)一课一练的第8章的第43练,内容涵盖第8章 指针的8.2指向简单变量的指针。 《编程语言基础-C语言》(高教版第5版)第43练 第8章 指针 8.2 指向简单变量的指针(原卷版) 一、单项选择题(本题共5小题) 1、若有定义 int *p, a=5;,则下列语句中能使指针变量p指向a的是( ) A. p = &a; B. p = a; C. *p = a; D. p = *a; 2、若有定义 int a=5, *p=&a;,则以下选项中能输出变量a中5的是( ) A. printf("%d", &a); B. printf("%d", p); C. printf("%d", *p); D. printf("%d", &p); 3、执行以下程序后,输出结果是( ) #include <stdio.h> main() { int x = 10, y = 20, *p; p = &x; *p = 30; p = &y; printf("%d,%d", x, *p); } A. 10,20 B. 10,30 C. 30,20 D. 30,30 4、以下关于指针变量说法正确的是( ) A. 指针变量定义后未初始化,其值为NULL。 B. 不同类型的指针变量,其所占内存大小不同。 C. 可以通过&运算符获取指针变量自身的地址。 D. 整型变量可以直接赋给指针变量。 5、使用const修饰符修饰指针变量时,若定义 const int *p;,以下描述正确的是( ) A. 指针变量p本身的值不能改变。 B. 指针变量p指向的变量的值不能通过p来改变。 C. p只能指向整型常量。 D. p既可以改变指向的变量,也可以改变指向变量的值。 二、判断题(本题共5小题) 1、指针变量中存放的是内存地址,通过该地址可以间接地访问内存单元中的数据,这种访问方式称为直接访问。( ) 2、两个指针变量可以相加,但不能相乘和相除。( ) 3、若有定义 int a=10, *p; p=&a;,则*和&是互逆运算,*&a等价于a,&*p等价于p。( ) 4、若有定义 int x=2, y=3, *px=&x, *py=&y;,则可以通过*px=*py;将y的值赋给x。( ) 5、若有定义 int a=5, *p=&a;,则执行p++;后,p中存放的地址数值增加了1。( ) 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $ 编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《编程语言基础-C语言》(高教版第5版)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《编程语言基础-C语言》(高教版第5版)一课一练的第8章的第43练,内容涵盖第8章 指针的8.2指向简单变量的指针。 《编程语言基础-C语言》(高教版第5版)第43练 第8章 指针 8.2 指向简单变量的指针(解析版) 一、单项选择题(本题共5小题) 1、若有定义 int *p, a=5;,则下列语句中能使指针变量p指向a的是( ) A. p = &a; B. p = a; C. *p = a; D. p = *a; 【答案】A 【解析】&是取地址运算符,&a表示变量a在内存中的地址。 2、若有定义 int a=5, *p=&a;,则以下选项中能输出变量a中5的是( ) A. printf("%d", &a); B. printf("%d", p); C. printf("%d", *p); D. printf("%d", &p); 【答案】C 【解析】变量a的值为5,指针p指向a,因此*p等价于a,其值为5。 3、执行以下程序后,输出结果是( ) #include <stdio.h> main() { int x = 10, y = 20, *p; p = &x; *p = 30; p = &y; printf("%d,%d", x, *p); } A. 10,20 B. 10,30 C. 30,20 D. 30,30 【答案】C 【解析】p = &x;使p指向x;*p = 30;通过指针p将x的值修改为30;接着p = &y;使p改为指向y;此时x的值已变为30,而*p是y的值20。因此输出结果为30,20。指针变量可以先后指向不同变量。 4、以下关于指针变量说法正确的是( ) A. 指针变量定义后未初始化,其值为NULL。 B. 不同类型的指针变量,其所占内存大小不同。 C. 可以通过&运算符获取指针变量自身的地址。 D. 整型变量可以直接赋给指针变量。 【答案】C 【解析】指针变量也是变量,在内存中有自己的存储单元,可以通过&(取地址符)获取其地址,因此C选项正确。 5、使用const修饰符修饰指针变量时,若定义 const int *p;,以下描述正确的是( ) A. 指针变量p本身的值不能改变。 B. 指针变量p指向的变量的值不能通过p来改变。 C. p只能指向整型常量。 D. p既可以改变指向的变量,也可以改变指向变量的值。 【答案】B 【解析】const int *p;表示指针p指向一个常量,通过p不能修改其指向的内容,但p本身的值(即指向的地址)可以改变。C选项错误,p可以指向普通的int变量,只是无法通过p修改它。D选项混淆了两种指针类型的区别。 二、判断题(本题共5小题) 1、指针变量中存放的是内存地址,通过该地址可以间接地访问内存单元中的数据,这种访问方式称为直接访问。( ) 【答案】× 【解析】通过变量名直接引用变量的方式称为“直接访问”,而通过指针变量中存放的地址来引用变量的方式称为“间接访问”。 2、两个指针变量可以相加,但不能相乘和相除。( ) 【答案】× 【解析】指针之间可以相减,但不能进行加法、乘法、除法运算。指针加法通常是通过指针与整数相加来实现的,两个指针相加没有实际意义,在语法上是不允许的。 3、若有定义 int a=10, *p; p=&a;,则*和&是互逆运算,*&a等价于a,&*p等价于p。( ) 【答案】√ 【解析】&是取地址运算符,*是指针运算符(解引用),二者互为逆运算。 4、若有定义 int x=2, y=3, *px=&x, *py=&y;,则可以通过*px=*py;将y的值赋给x。( ) 【答案】√ 【解析】*px代表px指向的变量x,*py代表py指向的变量y(值为3)。通过*px = *py;将*py的值3赋给*px,即赋值给变量x,因此x的值变为3。 5、若有定义 int a=5, *p=&a;,则执行p++;后,p中存放的地址数值增加了1。( ) 【答案】× 【解析】p是一个指向int类型的指针。当执行p++时,指针的移动步长取决于其指向的数据类型所占的字节数(即sizeof(int))。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $

资源预览图

第8章 第43练 指向简单变量的指针《编程语言基础-C语言》(高教版第5版)一课一练
1
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。