C基础与指针习题集:关键知识点详解

0 下载量 70 浏览量 更新于2024-08-03 收藏 63KB DOC 举报
本资源是一份关于C语言指针相关的习题集,主要涵盖了C基础中的指针概念和使用。以下是各个习题的详细解析: 1. 选择题1考察了指针的概念,变量的指针并不指向变量的值(A错误),也不仅仅是一个标志(D错误),而是指向变量在内存中的地址(B正确)。指针是一种存储内存地址的变量。 2. 习题2中,选项A通过解引用操作符(*)将两个指针所指向的值相加再赋给变量k是正确的。B试图将变量k的值赋给指针ptr2,不合法;C尝试将两个指针互相赋值,合法但无实际意义;D也是通过解引用两次实现两个值的乘法,正确。所以,错误选项是B。 3. 习题3测试了输入操作与指针的关联。A试图读取到指针p的内容,但未先初始化,错误;B和C都试图读取输入到指针而非变量本身,错误;D首先将指针p指向变量n,并将m的值写入n的位置,正确。因此,正确答案是D。 4. 在习题4中,函数`print_value`接受一个整型指针,将其递增后输出值。由于传入的是`&a`,所以`++*x`会先解引用再递增,即先输出25然后加1,因此结果是26,选D。 5. 习题5涉及指针的赋值。A中`*p1=*p2`尝试将`p1`指向的内容赋给`p1`指向的值,而非地址,错误;B中如果`n`和`m`不同,则`*p1=*p2`不正确;C将`p1`的地址赋给`p2`,是合法的;D中同样尝试改变`p1`指向的内容,错误。所以正确答案是C。 6. 习题6考查指针的引用和地址表示。A中`*&a`是`a`的地址,`&a`是`a`的地址,`*p`也是`a`的值,不是地址,错误;B的顺序混乱,错误;C中`*&p`是`p`所指向的地址,`*p`是该地址的内容,`&a`是`a`的地址,正确;D中`&a`是`a`的地址,`&*p`是`p`所指向的地址,`p`也是`a`的地址,正确表达的是地址。综合看,C和D都有可能代表地址,具体取决于上下文。 7. 习题7考察字符串常量和数组的等价性。A中`char*a=”china”;`声明并初始化了指针`a`,而`*a=”china”`则是错误的语法;B中字符串字面量的数组初始化方式是合法的,但两个表达式不等价;C正确,`s`是字符指针,将字符串赋值给指针不会改变指针的地址;D中两个字符数组`c`和`d`虽然内容相同,但它们是独立的,不等价。因此,正确答案是C。 8. 习题8考查字符串的长度和循环次数。给定的字符串`s`包含五个字符加上结束符'\0',总共6个字节。for循环条件`*s!=’\0’`意味着只要遇到结束符就停止,因此循环会执行到第6个字符为止,选C。 9. 习题9测试字符串赋值。A试图初始化一个长度为5的数组,但没有正确结束符,错误;B使用单引号定义字符数组,每个字符占一个位置,没有结束符,错误;C使用双引号定义字符串常量,正确。因此,正确答案是C。 这份习题集涵盖了C语言中指针的基础知识,包括指针的定义、运算、输入输出、数组与指针的关系以及字符串处理等内容。通过这些题目,学习者可以巩固对C语言指针的理解和应用能力。