|
|
检测点8-14
1.对于以下声明:
int a [], b [sizeof (int) * 10], c [40];
float d [], e [40];
请问:哪些对象的类型是兼容的?b和c的类型在什么条件下是兼容的?
答:a和b、a和c、d和e是兼容的,但b和c只有在int类型的长度为4时才兼容。
2.下例中,指针p1、p2和p3所指向的类型是否兼容?为什么?
int (* p1) [], (* p2) [], (* p3) [22];
答:兼容。因为p1和p2指向的类型相同,都是未指定大小的数组。p3指向的类型是具有常量大小的数组,与未指定大小的数组兼容。
3.对于声明:
int n = 3, a [n], b [n + 1], c [33];
哪些对象的类型是兼容的?
答:a和b、a和c、b和c都是兼容的。
4.表达式sizeof (int [])合法吗?为什么?
答:不合法。sizeof运算符的操作数不能是不完整类型。
5.表达式sizeof (int (*) [])合法吗?为什么?
答:合法。int (*) []是指针,尽管指向的类型不完整,但指针本身是完整类型。
|
|