指针的值

指针的值是一个地址,题目中的字符串 “girl” 应该是 *p 的值,即指针 p 所指地址存储的数据的值。

牛客网专项练习——C语言错题集(5)-LMLPHP

指针与数组、函数的组合

int *p[n] 等价于 int (*)p[n],是一个指针数组,因为 * 优先级比 [] 低,所以其本质上是一个数组,如果要让 p 是一个指针,则要写成 int (*p)[n]

CD 选项也是同样的问题,他们其实都是返回值为指针的函数(指针函数)C。 选项说指针指向返回值,这是错误的,返回值就是指针本身,这个返回值指向一个整型数据。如果要让 p 为一个函数指针,格式应改为 int (*p)()

牛客网专项练习——C语言错题集(5)-LMLPHP

空结构体

牛客网专项练习——C语言错题集(5)-LMLPHP

* 和 ++ 的优先级

这题做对了,不过是因为没有 11 这一选项。

将 a b c 代入 宏定义: ++a + b * ++b + c, a 和 c 应该没有争议,所以最后变成 2 + b * ++b + 3,由于 * 的优先级比 ++ 低,所以最后变成 2 + 3 * 3 + 3,即 14。 ( 运算时右边的 b 值变了,左边也会变,因为它们是同一变量,所以答案不是 11)

牛客网专项练习——C语言错题集(5)-LMLPHP

06-16 08:45