这个题目的答案肯定是A,但B也会经常被用到,而且也合法,只不过不是强类型匹配罢了。我只能说出题的人很无聊。
C语句是错误的,因为申明中p是一个指向char类型变量的指针,而指针是不允许进行乘法运算的,而且加法运算也没有意义(至于能不能进行我没试过,不好说)。
D语句中赋值符两端操作数类型不统一,而且不是兼容类型(如char类型可赋值给int类型,便是兼容类型)。
这道题目的主要是要读懂申明:
char *p,val; >> p是一个指向char类型变量的指针,val是一个char类型变量
从这个申明中可以看到宏定义和typedef的区别:
{
#define CHAR_PTR char*
CHAR_PTR p,val;
}
同上面的申明相同。
{
typedef char* CHAR_PTR;
CHAR_PTR p,val;
}
这个申明中p,val都是指针。
(注:没有初始化不是语法错误,是逻辑错误,是可以允许的)
[[it] 本帖最后由 MooGu 于 2008-2-22 19:35 编辑 [/it]]
C语句是错误的,因为申明中p是一个指向char类型变量的指针,而指针是不允许进行乘法运算的,而且加法运算也没有意义(至于能不能进行我没试过,不好说)。
D语句中赋值符两端操作数类型不统一,而且不是兼容类型(如char类型可赋值给int类型,便是兼容类型)。
这道题目的主要是要读懂申明:
char *p,val; >> p是一个指向char类型变量的指针,val是一个char类型变量
从这个申明中可以看到宏定义和typedef的区别:
{
#define CHAR_PTR char*
CHAR_PTR p,val;
}
同上面的申明相同。
{
typedef char* CHAR_PTR;
CHAR_PTR p,val;
}
这个申明中p,val都是指针。
(注:没有初始化不是语法错误,是逻辑错误,是可以允许的)
[[it] 本帖最后由 MooGu 于 2008-2-22 19:35 编辑 [/it]]