C++指针与链表基础复习及习题解析

需积分: 10 5 下载量 116 浏览量 更新于2024-09-12 2 收藏 118KB DOC 举报
"C++指针和链表复习题,包含选择题,涉及指针操作、数组、字符串、内存管理及函数参数等知识点。" 详细解释: 1. 指针与字符数组: - 选项A:声明了一个字符引用a,将其绑定到*p所指向的字符。 - 选项B:错误,不能将一个字符指针赋值给另一个字符指针,应使用&操作符取地址。 - 选项C:将指针p向后移动两个字符位置。 - 选项D:允许移动指针p。 2. sizeof运算符: - sizeof(x)/sizeof(int)计算整个数组x占用了多少个int大小的空间,答案是5,因此A、B正确。 - sizeof(p)/sizeof(int)计算指针p本身占的大小,通常指针大小不是由int决定的,所以C错误。 - sizeof(x)/sizeof(1)等同于sizeof(x),答案是5,因此D正确。 3. 字符串处理: - *s[1]访问字符串"Student"的第二个元素,即'T'。 - ps指向"Father"的第一个元素,即'F'。 - *ps同样指向'F',所以输出应该是"Teacher,F,Father"。 4. 字符转换: - *(ptr+1)+1指向's'的下一个字符,即'4',加1后变为'5',以字符形式输出,答案是C。 5. 函数调用: - 函数fun需要一个int引用和一个char指针作为参数,因此A正确,其他选项不正确。 6. 字符串复制: - 选项A:使用逻辑与操作符可能导致只复制一个字符。 - 选项B:等号右侧错误,t++会改变t的值。 - 选项C:自增操作可能导致丢失第一个字符。 - 选项D:正确实现,*s++=*t++逐个复制字符直到遇到空字符。 7. 函数参数传递: - 当数组作为函数参数时,实际传递的是数组的首地址,即选项A。 8. 内存管理: - A、B、C都是正确的,D是错误的,因为静态变量在栈上分配,不需要用delete释放。 9. 不正确的语句: - 选项A:可以声明一个指向整型的指针并赋值为0,但不是指向地址0,而是未定义的值。 - 选项B:错误,不能将一个字符串字面量赋值给浮点指针。 这些题目涵盖了C++中关于指针的基础知识,包括指针操作、数组、字符串处理、内存管理和函数参数传递。通过解答这些题目,学习者可以加深对C++指针和链表的理解。