C语言指针专项练习:理解与实践

需积分: 10 1 下载量 185 浏览量 更新于2024-07-19 收藏 96KB DOC 举报
专项7-课后作业:本题集合了C语言指针的相关概念和练习,主要考察指针的理解与应用。以下是各小题的详细解析: 1. 题目考察的是指针的基本操作。选项D `q=a;` 是非法的,因为指针`q`被声明为指向`a`的指针,试图将变量本身赋值给另一个指针是不合法的。正确的操作是将指针指向其他变量。 2. 由于`inta=511`,`*b`会获取`a`的值,因此`printf("%d\n",*b);`将输出`a`的当前值,即`511`,选择D。 3. B选项`p1=a;`是错误的,因为指针`p1`和`p2`都指向`a`的地址,试图让`p1`指向`a`的值而不是地址是不正确的。其余选项均合法。 4. 变量的指针表示该变量的地址,因此选B。 5. 若要从键盘读取并分别赋值给`a`、`b`和`c`,指针`d`应该指向`c`,所以正确答案是A,用地址的方式传递给`scanf`。 6. 选项D正确解释了指针的概念:`(1)`将`a`的地址赋给指针`p`,`(2)`则是将`a`的值通过指针`p`来访问和赋值。 7. 选项D中的`&a`、`&*p`和`p`分别代表`a`的地址、`*p`的地址(即`a`的值的地址)和`p`本身的地址,都是地址,故正确。 8. 若要创建一个`double`类型的指针并指向`x`的地址,选项B`p=&x;`是正确的,因为`*p`将得到`x`的值。 9. 选项D是正确的。首先声明`p`指向`b`,然后使用`scanf`读取`b`的值,并通过`p`将值赋给`a`,这样就实现了预期的存储结构。 10. 根据题目描述,要实现图中所示的存储结构,`p`和`q`分别指向`m`和`n`的地址,但没有提供具体的操作。可能的赋值语句取决于具体需求,但这里没有给出完整操作。 这道C语言指针专项练习包含了基本的指针声明、赋值、访问以及内存操作,有助于深入理解C语言中的指针概念。