第41练 第8章 指针的基本概念、指针变量的定义与初始化《C语言程序设计》(电子工业出版社)一课一练

| 2份
| 6页
| 35人阅读
| 0人下载

内容正文:

编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(电子工业出版社)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《C语言程序设计》(电子工业出版社)一课一练的第8章的第41练,内容涵盖第8章指针的8.1~8.2.2 指针的基本概念、指针变量的定义与初始化。 《C语言程序设计》(电子工业出版社)一课一练 第41练 第8章 指针 8.1~8.2.2 指针的基本概念、指针变量的定义与初始化 1、 单项选择题(本题共4小题) 1、关于指针与指针变量的区别,下列说法正确的是( ) A. 指针是内存单元的地址,是常量;指针变量是存储地址的变量,可以赋值不同地址 B. 指针和指针变量都是变量,可以随时修改值 C. 指针变量就是指针,没有本质区别 D. 指针是变量,指针变量是固定的地址常量 【答案】A 【解析】指针指的是内存单元的地址,是固定不变的常量;指针变量是专门用于存储地址的变量,在符合类型要求的前提下,可以被赋予不同的同类型变量地址,二者本质不同,不能混淆。 2、下列指针变量的定义方式,符合 C 语言语法规则的是( ) A. int p*; B. char *c; C. float p;*q; D. int *a, b; // 表示 a 和 b 都是指针变量 【答案】B 【解析】指针变量定义时,*必须与变量名直接结合,A 的格式错误;C 中q没有与*结合,是普通 float 变量;D 中b是普通 int 变量,只有a是指针变量,只有 B 的定义方式正确。 3、关于指针变量的初始化操作,下列写法正确的是( ) A. int *p = 1000; B. int a = 5; int *p = a; C. int a = 5; int *p = &a; D. char *p = 123; 【答案】C 【解析】指针变量不能直接赋值整型常量(A、D 错误),必须通过&运算符获取合法变量的地址;B 中直接赋值变量a的值而非地址,正确的初始化方式是将a的地址&a赋值给指针p,即 C 的写法。 4、下列关于指针变量指向类型的描述,正确的是( ) A. 一个指针变量可以同时指向 int 类型和 char 类型的变量 B. 指针变量的指向类型可以和它所指向的变量类型不一致 C. 指向 float 类型的指针变量可以存储 int 类型变量的地址 D. 指针变量的指向类型必须和它所指向的变量类型完全一致 【答案】D 【解析】指针变量有严格的类型限制,只能指向同类型的变量,这样才能保证正确匹配内存单元的大小(如 int 占 4 字节、char 占 1 字节),避免出现内存访问错误。 2、 判断题(本题共3题) 1、指针变量是存储内存地址的变量,在符合类型要求的前提下,可以修改它的值,指向不同的同类型变量。( ) 【答案】√ 【解析】指针变量的本质是变量,存储的内容是内存地址,只要新地址对应的变量类型与指针指向类型一致,就可以重新赋值,指向不同的变量。 2、可以直接将整型常量 1000 赋值给指针变量,让它指向地址为 1000 的内存单元。( ) 【答案】× 【解析】指针变量不能直接赋值整型常量,直接赋值的常量地址可能指向非法内存空间,导致程序崩溃或运行错误,必须通过&运算符获取合法变量的地址进行赋值。 3、主函数中定义的指针变量是局部变量,只能在主函数内部使用,无法被其他自定义函数直接访问。( ) 【答案】√ 【解析】指针变量作为局部变量时,作用域规则与普通局部变量一致,仅限于定义它的函数内部,其他函数无法直接访问该指针变量。 3、 填空题(本题共2题) 1、指针变量的核心作用是存储____,通过它可以间接访问对应的内存单元,实现对变量的操作。 【答案】变量的内存地址 【解析】指针变量的本质是专门存储内存地址的变量,只有存储了合法变量的地址,才能通过*运算符间接访问该变量的内存空间,实现数据的读写操作。 这一特性是指针实现间接访问内存的核心基础,也是指针与普通变量的本质区别。 2、定义一个指向单精度浮点型(float)变量的指针变量ptr的 C 语言语句是____。 【答案】float *ptr; 【解析】该语句中,float指定了指针变量ptr的指向类型,*用于标识ptr是指针变量,符合 C 语言指针变量的定义格式。 4、 读程序写结果题(本题共1题) 1、阅读下面的 C 语言程序,写出程序运行后的输出结果。 【程序代码】 #include <stdio.h> int main() { int score = 85; int *p = &score; *p = *p + 10; printf("score=%d, *p=%d", score, *p); return 0; } 【答案】 程序运行结果: score=95, *p=95 【解析】 指针变量p通过&score获取变量score的内存地址,指向score的内存单元;*p表示访问p指向的变量,对*p执行加 10 操作,本质是直接修改score的内存值。因此score和*p的最终值均为 95,程序输出对应结果。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $ 编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(电子工业出版社)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《C语言程序设计》(电子工业出版社)一课一练的第8章的第41练,内容涵盖第8章指针的8.1~8.2.2 指针的基本概念、指针变量的定义与初始化。 《C语言程序设计》(电子工业出版社)一课一练 第41练 第8章 指针 8.1~8.2.2 指针的基本概念、指针变量的定义与初始化 1、 单项选择题(本题共4小题) 1、关于指针与指针变量的区别,下列说法正确的是( ) A. 指针是内存单元的地址,是常量;指针变量是存储地址的变量,可以赋值不同地址 B. 指针和指针变量都是变量,可以随时修改值 C. 指针变量就是指针,没有本质区别 D. 指针是变量,指针变量是固定的地址常量 2、下列指针变量的定义方式,符合 C 语言语法规则的是( ) A. int p*; B. char *c; C. float p;*q; D. int *a, b; // 表示 a 和 b 都是指针变量 3、关于指针变量的初始化操作,下列写法正确的是( ) A. int *p = 1000; B. int a = 5; int *p = a; C. int a = 5; int *p = &a; D. char *p = 123; 4、下列关于指针变量指向类型的描述,正确的是( ) A. 一个指针变量可以同时指向 int 类型和 char 类型的变量 B. 指针变量的指向类型可以和它所指向的变量类型不一致 C. 指向 float 类型的指针变量可以存储 int 类型变量的地址 D. 指针变量的指向类型必须和它所指向的变量类型完全一致 2、 判断题(本题共3题) 1、指针变量是存储内存地址的变量,在符合类型要求的前提下,可以修改它的值,指向不同的同类型变量。( ) 2、可以直接将整型常量 1000 赋值给指针变量,让它指向地址为 1000 的内存单元。( ) 3、主函数中定义的指针变量是局部变量,只能在主函数内部使用,无法被其他自定义函数直接访问。( ) 3、 填空题(本题共2题) 1、指针变量的核心作用是存储____,通过它可以间接访问对应的内存单元,实现对变量的操作。 这一特性是指针实现间接访问内存的核心基础,也是指针与普通变量的本质区别。 2、定义一个指向单精度浮点型(float)变量的指针变量ptr的 C 语言语句是____。 4、 读程序写结果题(本题共1题) 1、阅读下面的 C 语言程序,写出程序运行后的输出结果。 【程序代码】 #include <stdio.h> int main() { int score = 85; int *p = &score; *p = *p + 10; printf("score=%d, *p=%d", score, *p); return 0; } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $

资源预览图

第41练 第8章 指针的基本概念、指针变量的定义与初始化《C语言程序设计》(电子工业出版社)一课一练-第1页
1

由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。