指针与结构体习题解析:选择与实例

需积分: 0 1 下载量 178 浏览量 更新于2024-08-05 收藏 83KB PDF 举报
在本篇关于《第6章指针与结构体》的C#编程习题中,我们将探讨一系列关于指针和结构体的概念。首先,选择题部分涉及指针的正确用法: 1. 不正确的定义是(C)。在C语言中,指针定义应先声明指针变量再初始化,选项C中先定义了整型变量`i`再将其地址赋给指针`p`,是不正确的。 2. 非法的赋值语句是(D)。`p=n`试图将一个整型变量的地址赋给另一个整型变量,这在C语言中是不允许的,因为`p`是存储整型地址的指针,而`n`是一个变量。 3. 正确的指针定义和初始化是(B)。`int *p=a;`将指针`p`指向数组`a`的首元素,这是对数组元素间接访问的常见方式。 4. 对数组元素的正确引用是(C)。使用指针加法`(p+2)`表示数组元素的偏移,然后使用解引用操作`*(p+2)`来访问该元素。 5. 数值为9的表达式是(B)。在给定的数组`inta[]`中,元素索引从0开始,所以数值为9的元素对应于索引8,因此`(P+8)`指向该位置,即`*(P+8)`。 6. 程序输出结果是(C)。在`fun`函数中,`*a`和`*b`的值会发生交换,所以原`x=2`和`y=3`调用后变为`x=3`和`y=2`,输出为`3,2`。 7. 结构体相关知识点中,(D)是不正确的。`stu`是用户自定义的结构体类型名,但不是关键字。 8. 错误的叙述是(D)。结构变量与基本类型的变量间不能直接赋值,它们必须通过成员名间接进行。 9. 对结构体成员`age`的非法引用是(B)。在C语言中,`student.age`是语法错误,应该是`stu1.age`或`(*p).age`来访问结构体变量的成员。 10. 最后,题目要求定义一个结构体(联合)数组,但是给出的信息不完整,无法提供完整的代码示例。通常会定义一个`struct`或`union`类型,然后分配数组来存储结构体或联合类型的实例。 总结这些习题,本章的核心内容包括指针的声明、赋值、数组操作以及结构体的基础概念,如成员访问、类型定义和错误使用。熟练掌握这些概念对于理解C#中的数据组织和内存管理至关重要。