题解 | #嵌入式宏空间坐标数量#

嵌入式宏空间坐标数量

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,即这个点对象二维的。

全部评论

相关推荐

牛客717484937号:双飞硕没实习挺要命的
点赞 评论 收藏
分享
4 收藏 评论
分享
牛客网
牛客企业服务