----指针习题.docx----

preview
需积分: 0 0 下载量 199 浏览量 更新于2021-03-11 收藏 57KB DOCX 举报
指针是C语言中一种强大的工具,用于存储变量的地址,从而间接地访问和修改变量的值。在处理指针时,理解它们的工作原理和如何正确使用是非常关键的。 1. 指针变量的含义是指该变量的**地址**(B)。这意味着,当声明一个指针并将其与变量关联时,指针存储的是该变量内存位置的地址,而不是其值。 2. 在赋值语句中,不能将整型变量赋值给指针(B),如`ptr2=k`。这是因为指针需要存储地址,而不是整数值。其他选项,如`k=*ptr1+*ptr2`,`ptr1=ptr2`和`k=*ptr1*(*ptr2)`都是合法的指针操作,它们涉及到指针的算术运算和值的传递。 3. 正确的指针操作是将指针指向变量并赋值,如`p = &n; *p=n;`(D)。这将使指针`p`指向变量`n`的地址,并通过解引用`*p`将值`n`赋给`m`。 4. 函数`print_value`接受一个整数指针并递增指针所指向的值,因此输出结果是`26`(D)。`print_value(&a)`会先递增`a`的值,然后打印。 5. 不正确的赋值语句是`p1=&m; *p1=*p2;`(D)。虽然可以将`p1`设置为指向`m`的地址,但直接将`*p1`赋值为`*p2`会导致将`m`的值改变为`n`的值,而这里`p1`和`p2`应该分别指向不同的变量。选项A中,`p2=&p1`创建了一个指向指针的指针,这不是赋值语句。 6. 代表地址的选项是`&a, &*p, p`(D)。`&a`是变量`a`的地址,`&*p`等同于`p`,因为`*p`表示解引用`p`得到的值的地址,而`p`本身就是指向`a`的地址。 7. 正确的判断是`char *s=”china”;`等价于`char *s; s=”china”;`(C)。这意味着可以在声明后立即初始化指针。 8. `for`循环的执行次数取决于非空字符的数量,考虑到`\t`是制表符,`\018`是八进制转义序列(通常表示一个控制字符),因此有6个非空字符(C)。 9. 能正确进行字符串赋值操作的是`char *s ; s=”ABCDE” ;`(C)。其他选项要么超出数组边界,要么没有正确初始化指针。 10. `printf`期望一个格式化字符串,但`s+=2`后的`s`是字符地址,所以输出是`字符'c'的地址`(C)。 11. 不能正确执行的赋值语句是`p2=c`(B),因为`p2`应指向字符变量`c`的地址,而不是`c`本身。 12. 正确的叙述是`*p`与`s[0]`相等(D),因为`p`和`s`都指向相同的字符串起始位置,`*p`是第一个字符,即`s[0]`。 13. 与库函数`strcpy`功能不相等的程序段是`strcpy4`(D),因为它缺少对结束条件的检查,可能会导致缓冲区溢出。 以上就是关于指针习题的详细解答,涵盖了指针的基本操作,如赋值、解引用、地址和值的传递,以及字符串操作。正确理解和使用指针对于编写高效且安全的C程序至关重要。
三度女青年
  • 粉丝: 49
  • 资源: 22
上传资源 快速赚钱
voice
center-task 前往需求广场,查看用户热搜

最新资源