求大神讲解关于struct在C++中的使用

HuanY_BIT 2019-08-06 04:10:04
看到一段代码,不懂这个handel_s、hh与handle之间的关系是怎样的?
1. 第22、23行代表什么呢?
2. 在调用过程中hh与point又是什么关系呢?



初始化如下:
struct handle_s {
EIGEN_MAKE_ALIGNED_OPERATOR_NEW

handle_s (double px, double py, double radius, double red, double green, double blue, double alpha)
: point_(2),
radius_(radius),
red_(red),
green_(green),
blue_(blue),
alpha_(alpha)
{
point_ << px, py;
}

Vector point_;
double radius_, red_, green_, blue_, alpha_;
};

static handle_s rep1 (3.0, 0.0, 2.0, 0.0, 0.0, 1.0, 0.2);
static handle_s rep2 (0.0, 3.0, 2.0, 0.0, 0.5, 1.0, 0.2);

static handle_s * handle[] = { &rep1, &rep2, 0 };
static handle_s * grabbed (0);
static Vector grab_offset (3);


在main函数种调用过程如下(为了明确问题,仅贴出部分):
for (handle_s ** hh (handle); *hh != 0; ++hh) {
Vector delta (xx - (*hh)->point_);
}



求大神详解,跪谢
...全文
165 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
klavien 2019-08-17
  • 打赏
  • 举报
回复
引用 2 楼 迷路的冷兔 的回复:
[quote=引用 1 楼 636f6c696e 的回复:] 22、23初始化两个全局变量指针 ,一个指向handle_s数组,一个指向handle_s结构体 hh是二级指针,(*hh)->访问成员point_
您好,感谢,请问这个hh为什么需要定义为一个二级指针[/quote] 22是定义并初始化一个名叫handle的数组,该数组里面每个元素是一个handle_s*类型的指针,所以handle是一个指针数组,注意与数组指针的区别。 23是定义并初始化一个名叫grabbed的指针,grabbed是一个指针。 main函数里面hh之所以是二级指针,就是因为上面说的handle是一个指针数组,要访问先*hh,找到里面的一个元素,既类型为handle_s*的指针,然后再利用这个指针(*hh)->访问成员point_
老葱1# 2019-08-14
  • 打赏
  • 举报
回复
这代码真是炫,int a(12) 这种那个写法一般只会在 构造函数中出现; 必须定义 指针的指针 hh, for (handle_s ** hh =handle; *hh != 0; ++hh) { 因为 ++h ( 或者 h+1 ) :指针 + int, 都是按指针指向的内容长度偏移的, hh 的内容是指针,正好偏移到数组的下一个。 对于例子中,handle 是编译时就固定大小, 没必要写的这么难理解: static handle_s * handle[] = { &rep1, &rep2 }; for( int = 0 ; i < sizeof( handle )/sizeof(handle[0]); i ++ ){ Vector delta (xx - handle[i]->point_); }
HuanY_BIT 2019-08-06
  • 打赏
  • 举报
回复
引用 1 楼 636f6c696e 的回复:
22、23初始化两个全局变量指针 ,一个指向handle_s数组,一个指向handle_s结构体 hh是二级指针,(*hh)->访问成员point_
您好,感谢,请问这个hh为什么需要定义为一个二级指针
636f6c696e 2019-08-06
  • 打赏
  • 举报
回复
22、23初始化两个全局变量指针 ,一个指向handle_s数组,一个指向handle_s结构体 hh是二级指针,(*hh)->访问成员point_
Google出品的GO语言,最近有火起来的趋势。据众大神说,GO语言弥补了C和C++还其他语言的缺陷,颇有白富美的感觉。 网络上搜索了一番,发现【吾爱】上并没有GO语言的视频下载,其他站点也很少提供GO语言的视频教学。 51CTO、网易云课堂、土豆有”无闻“主讲的教程,好一阵搜索终于在”无闻“的Github找到了百度云的下载链接,整理了一番,贡献给大家。 ********************** 该视频堪称精典,望共同进步。********************** 【详细列表】 一、Go编程基础   │   【Go编程基础】01Go开发环境搭建   │   【Go编程基础】02Go基础知识   │   【Go编程基础】03类型与变量   │   【Go编程基础】04常量与运算符   │   【Go编程基础】05控制语句   │   【Go编程基础】06数组array   │   【Go编程基础】07切片slice   │   【Go编程基础】08map   │   【Go编程基础】09函数function   │   【Go编程基础】10结构struct   │   【Go编程基础】11方法method   │   【Go编程基础】12接口interface   │   【Go编程基础】13反射reflection   │   【Go编程基础】14并发concurrency   │   【Go编程基础】15项目与坑 二、Go Web基础   │   【Go Web基础】01博客项目设计   │   【Go Web基础】02初窥 Web 开发   │   【Go Web基础】03模板用法讲解   │   【Go Web基础】04登录及分类管理   │   【Go Web基础】05文章的添加与删除   │   【Go Web基础】06评论与分类显示   │   【Go Web基础】07为文章添加标签   │   【Go Web基础】08文章附件上传   │   【Go Web基础】09国际化支持   │   【Go Web基础】10自建 HTTP 间件   │   【Go Web基础】11简易的 RPC 实现   │   【Go Web基础】12Go Web 扩展学习 三、名库讲解   │   【Go 名库讲解】00课程学习指南   │   【Go 名库讲解】01goconfig 使用解析   │   【Go 名库讲解】02xorm常见用法指导&高级用法讲解   │   【Go 名库讲解】03goconvey优雅的单元测试   │   【Go 名库讲解】04macaron初识Macaron&核心服务的使用&自定义服务

64,647

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧