【C语言指针与数组知识点】 1. 变量的指针是指该变量的地址,因此选择题第1题的正确答案是B。指针存储的是变量在内存中的地址,而不是变量的值或名。 2. 第2题中,正确表示地址的选项是D,即`&a, &*point, point`。`&a`是变量a的地址,`&*point`等同于`point`,因为解引用操作`*point`得到a的值,然后取地址就是a的地址,而`point`本身就是指向a的指针。 3. 正确说明和初始化指针p的方式是D,即`int *p=&a;`。这将p声明为一个整型指针,并将其初始化为指向变量a的地址。 4. 第4题中,正确选项是C,`char *s=“china〞;`等价于`char *s; s=“china〞;`。其他选项都存在错误,如A中不能直接将字符串赋值给指针,B中初始化数组时应使用大括号,D中不能直接对两个数组进行相同初始化。 5. 合法的定义字符串的方式是B,`char *p=“china〞;`。这定义了一个指向字符常量数组的指针,而其他选项要么没有正确分配内存,要么尝试修改常量字符串。 6. 能正确表示二维数组a中任意元素的地址表达式是C,`&a[0][0]+4*i+j`。因为数组a是一个4行6列的矩阵,每一行的元素间间隔为4个int(取决于编译器的字节数),所以地址计算应基于行优先的原则。 7. 表达式不为3的选项是D,`p1=x+2, *++p1`。这里p1首先自增,然后再解引用,所以访问的是x[2]的下一个位置,不是3。 8. 对于x、*x、x[0]及`&x[0][0]`,正确描述是B。只有x和`&x[0][0]`表示的是元素`x[0][0]`的地址,*x表示的是x数组的第一个元素的值,x[0]表示的是第一行数组的地址。 9. 正确引用数组元素的是D,`*(*(a+m)+n)`。这将获取a数组第m行第n列的元素。 10. 给定的程序将输出B,`bcabcabc`。程序首先将字符串连接`p1`和`p2`,然后在`str`的第二个位置开始复制结果,覆盖掉原有的`'a'`。 11. 下面的程序会输出C,`51`。程序通过do-while循环将十进制数字a转换为十六进制字符,每次取余后加48或55(ASCII码)得到对应字符,最后输出的是`a/5`的结果,即`28/5`的余数。 12. 最后一个程序的运行结果未给出,通常这种程序用于打印字符数组s的内容。由于没有完整的代码,无法确定具体输出。通常情况下,程序会输出字符串s的内容,但在这里,s未初始化,所以输出可能不可预测,取决于内存中的随机数据。 这些题目涵盖了C语言中的基本指针操作、数组的使用、字符串处理以及地址和指针的运算,是学习C语言的重要知识点。理解并掌握这些概念对于编写C程序至关重要。
剩余12页未读,继续阅读
- 粉丝: 381
- 资源: 8万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助