C语言指针练习与解析

版权申诉
0 下载量 112 浏览量 更新于2024-08-06 收藏 43KB DOC 举报
"C语言指针习题及答案97818.doc" C语言中的指针是编程中的重要概念,它允许我们直接访问内存地址,提供了高效的数据操作和灵活的编程方式。以下是对题目中涉及知识点的详细解释: 1. 指针变量存储的是变量的地址,而不是值、名或标志。因此,变量的指针含义是指该变量的地址,选项B正确。 2. 赋值语句`ptr2=k`是错误的,因为`ptr2`是一个指针,应指向内存地址,而`k`是一个整数值。正确的赋值方式是`ptr2 = &k`,将`k`的地址赋给`ptr2`。 3. 在C语言中,指针可以用来传递地址。正确赋值语句是`p=&n; *p=n; *p=m;`,这将使指针`p`指向变量`n`,然后将`m`的值赋给`n`通过解引用`*p`。 4. 函数`print_value(int *x)`接受一个整型指针,`++*x`会递增指针所指的值。所以当调用`print_value(&a)`时,`a`的值会增加1,输出结果为26,选项D正确。 5. 正确的赋值语句选项是C,其中`p1=&m; p2=p1;`将`m`的地址赋给`p1`,再将`p1`的值(即`m`的地址)赋给`p2`,使得`p1`和`p2`都指向`m`。 6. 代表地址的选项是D,`&a`是`a`的地址,`&*p`等同于`p`(因为`*p`是解引用得到`a`的值,`&`取这个值的地址,等于`p`),`p`本身就是指向`a`的指针。 7. 判断正确的选项是C,`char *s="china";`声明了一个字符指针`s`并让它指向字符串"china"的首地址,而`char s[10]={"china"};`是在栈上创建了一个字符数组并初始化。 8. for循环中,`*s!='\0'`会检查字符串结束符,`\t`和`\018`在C语言中分别表示制表符和八进制数18的ASCII值,因此循环会跳过这些非可见字符,直到遇到真正的字符串结束符`\0`。因此,循环执行次数是6次,选项C正确。 9. 正确的字符串赋值操作是C,`char *s; s="ABCDE";`声明了一个字符指针并让它指向静态存储区的字符串"ABCDE"。 10. 未给出完整的问题,但可以看出这是关于字符串赋值的题目。在C语言中,正确的方式是使用字符数组或通过指针来赋值字符串。 以上是针对题目中提供的指针习题涉及的C语言指针知识点的详细解析。指针的使用是C语言中较难但至关重要的部分,熟练掌握指针能够帮助编写更高效、灵活的代码。