编程练习:解析数组与指针的选择题

需积分: 50 56 下载量 118 浏览量 更新于2024-09-09 3 收藏 78KB DOC 举报
"这篇资料是关于数组和指针的编程练习题目,主要涉及C语言中的指针操作和数组使用。" 在编程中,数组和指针是至关重要的概念,尤其在C语言中更是如此。数组是一种存储同类型数据集合的数据结构,而指针则是存储内存地址的变量,它允许我们间接访问和操作其他变量。以下是对题目中涉及的知识点的详细解释: 1. 指针赋值:题目[8.1]强调了指针赋值的正确方式。`pb=&x`是正确的,因为这将指针`pb`设置为变量`x`的地址。其他选项错误,因为`pb=x`尝试将指针赋值为整型变量,`*pb=&x`和`*pb=*x`试图对指针解引用并赋值,这在未初始化指针时是不合法的。 2. NULL的值:题目[8.2]询问`NULL`的输出。在C语言中,`NULL`通常表示空指针,打印其值会输出0。 3. 函数参数传递:题目[8.3]展示了函数参数传递的方式。在`sub`函数中,通过指针修改了实参的值。最后输出的值是-5, -12, -7,因为每次调用`sub`都改变了传入的指针所指的变量。 4. 指针运算与乘法:题目[8.4]涉及到指针和算术运算。表达式`*(p=&n)=*pk*(*pm)`将`k`和`m`的值相乘,然后赋给`n`,因此输出是10。 5. 指针递增:题目[8.5]到[8.7]考察了指针递增的操作。`*P++`首先返回当前指针`P`的值(20),然后指针向后移动;`*++P`先将指针向前移动,然后返回新位置的值(30);`++*P`先将指针所指的值增加1(变为21),然后返回这个新值。 6. 函数参数传递和指针:题目[8.8]和[8.9]展示了通过指针传递变量地址以及解引用操作。`prtv`函数接受一个指向整型变量的指针,并对其解引用并递增,因此输出26。在[8.9]中,`**k`解引用两次,得到`b`的值,即100。 7. 交换两个变量的值:题目[8.10]的`fun`函数通过浮点指针实现了两个变量的值交换。`*a=*a+*a`将`a`的值翻倍,然后`*a=*b`和`*b=w`实现了交换,因此输出是3, 2。 8. 指针的指针:在[8.9]中,`k`是一个指向指针的指针,`k`可以用来存储`a`(一个指向整型变量的指针)的地址,`**k`解引用两次后获取`b`的值。 这些练习题目有助于深入理解和熟练运用C语言中的数组和指针,包括指针的初始化、赋值、递增、解引用以及通过指针进行的函数参数传递和变量值的改变。掌握这些知识对于编写更复杂、更高效的代码至关重要。