单选题
1、第254题 (1.0分) 题号:186 已知p,p1为指针变量,a为数组名,j为整型变量,下列赋值语句中 不正确的是()。
A
p=&j,p=p1;
B
p=a;
C
p=&a[j];
D
p=10;
答案解析
正确答案:D
解析:
**解析:**
本题考查 C 语言中指针变量的赋值规则。指针变量用于存储内存地址,因此只能将地址值赋给指针变量。
* **A. `p=&j, p=p1;`**
* `&j` 是整型变量 `j` 的地址,类型匹配,可以赋值给指针 `p`。
* `p1` 也是指针变量,两个同类型的指针之间可以相互赋值。
* 该语句合法。
* **B. `p=a;`**
* 在 C 语言中,数组名 `a` 代表数组首元素的地址(即 `&a[0]`)。
* 将数组首地址赋给指针 `p` 是常见的操作,使 `p` 指向数组开头。
* 该语句合法。
* **C. `p=&a[j];`**
* `a[j]` 是数组中的第 `j` 个元素,`&a[j]` 取该元素的地址。
* 将数组元素的地址赋给指针 `p`,类型匹配。
* 该语句合法。
* **D. `p=10;`**
* `10` 是一个整型常量(int),而不是一个合法的内存地址表达式。
* 虽然在某些旧标准或特定编译器下可能仅发出警告(因为整数可以被强制转换为指针),但在标准的 C 语言编程规范和大多数现代编译器严格模式下,**不能直接将一个整数常量赋值给指针变量**,除非进行显式的强制类型转换(如 `p = (int *)10;`),且直接赋值为非零常数通常被视为非法或不安全的操作,因为它指向了一个未定义或受保护的内存区域。在考试语境中,这是典型的错误用法,因为指针应该存储地址,而非随意的整数值。
* 该语句不正确。
综上所述,不正确的赋值语句是 **D**。
**答案:D**
题目纠错
c语言选择判断题库
相关题目
单选题
1、第5题 (1.0分) 题号:684 在C语言中,要求运算数必须是整型的运算符是()。
单选题
1、第4题 (1.0分) 题号:640 以下对二维数组a的正确说明是()。
单选题
1、第3题 (1.0分) 题号:187 经过下列的语句 int j,a[10],*p;定义后,下列语句中合法的是()。
单选题
1、第2题 (1.0分) 题号:681 以下运算符中优先级最低的是()。
单选题
1、第1题 (1.0分) 题号:513 int a[10];合法的数组元素的最小下标值为()。
单选题
1、〖第40题〗740) 若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,
单选题
1、〖第39题〗560) 能将高级语言编写的源程序转换为目标程序的是()。
单选题
1、〖第38题〗77) 以下描述中,正确的是()。
单选题
1、〖第37题〗528) 对于void类型函数,调用时不可作为()。
单选题
1、〖第36题〗88) 两个指针变量不可以()。
