题解 | #嵌入式宏空间坐标数量#
嵌入式宏空间坐标数量
https://www.nowcoder.com/practice/d39d14aa884f490a987854fbc5248b7e
其中包含多个相同类型(类型未知)的变量(第一个一定是x)表示坐标...
题中说包含多个相同类型的变量,第一个变量一定是x,可知,类型不可知,所有变量类型相同。
应使用typeof(关键字,它可以取得变量的类型,或者表达式的类型。
/** * struct Point { * int x; * int y; * }; */ /** * * * * @param point Point类 上方struct仅为二维空间点类示例,题中为多维空间的点类 * @return int整型 */ #define Dimension(point) (sizeof(point) / sizeof(typeof(point.x))) int define_count(struct Point point ) { // write code here return Dimension(point); }
- Dimension(point) (sizeof(point) / sizeof(typeof(point.x)))的理解
sizeof(Point) 表示整个Point结构体的大小,假设Point只有两个成员变量,变量为int型数据,sizeof(Point)两个整形的大小之和,因为一个整形占用4个字节,所以sizeof(Point)应该是8(即 2 * sizeof(int))。而 typeof(Point.x) 表示Point结构体中的一个成员变量x的类型,即int,所以sizeof(typeof(Point.x))应该是4。
因此,计算式 sizeof(Point) / sizeof(typeof(Point.x)) 就相当于 8 / 4,结果是2,即这个点对象二维的。