常见问题解析

<span style="font-family: Arial, Helvetica, sans-serif;">一.//以下代码输出什么____.  </span>
<span style="font-family: Arial, Helvetica, sans-serif;">main()</span>
{
   int a[5]={1,2,3,4,5};
   int *p=(int *)(&a+1);
   printf("%d",*(p-1));
}

二.

struct A{
  void foo(){printf("foo");}
  virtual void bar(){printf("bar");}
  A(){bar();}
};
struct B:A{
  void foo(){printf("b_foo");}
  void bar(){printf("b_bar");}
};
那么 
A *p=new B;
p->foo();
p->bar();
输出为: 
barfoob_bar

1.只有用virtual修饰的函数才能动态绑定
2.如果在构造函数或析构函数中调用虚函数,则运行的是为构造函数或析构函数本人类型定义的版本(c++prime 中文版第四版 p497)
因为在构造子类的时候,首先回去调用父类的默认构造函数,此时子类还是未初始化的,所以不可能调用子类函数

一个类的成员被定义为virtual,就意味着它在告诉自己的子类:我准备了一笔遗产,你可以全盘接受,也可以完全拒绝或者修改我的遗嘱。显然,虚方法授予子类的权利甚至大于抽象方法。子类面对抽象方法只有重写(override)的权利,而对于虚方法,它还可以选择完全继承。

三.

线程和进程的区别联系:
1,进程:子进程是父进程的复制品。子进程获得父进程数据空间、堆和栈的复制品。
2,线程:相对与进程而言,线程是一个更加接近与执行体的概念,它可以与同进程的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。
两者都可以提高程序的并发度,提高程序运行效率和响应时间。
线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源管理和保护;而进程正相反。同时,线程适合于在SMP机器上运行,而进程则可以跨机器迁移。
根本区别就一点:用多进程每个进程有自己的地址空间(address space),线程则共享地址空间。所有其它区别都是由此而来的:
1、速度:线程产生的速度快,线程间的通讯快、切换快等,因为他们在同一个地址空间内。
2、资源利用率:线程的资源利用率比较好也是因为他们在同一个地址空间内。
3、同步问题:线程使用公共变量/内存时需要使用同步机制还是因22 34 55 77 89 93 99 102 120 140
0 1 2 3 4 5 6 7 8 9
假设低下标用low表示,高下标用high表示。
查找77:
开始low = 0, high = 9
第一次查找,找到中心的下标为(0+9)/2 = 4,即89,由于89大于77,所以,调整low = 0,high = 3(注意:由于知道下标为4的元素比77大,所以不会让high等于4)
第二次查找,找到中心的下标为(0+3)/2 = 1,即34,由于34小于77,所以,调整low = 2,high = 3
第三次查找,找到中心的下标为(2+3)/2 = 2,即55,由于55小于77,所以,调整low = 3,high = 3
第四次查找,找到中心的下标为(3+3)/2 = 3,即77,找到所要找的元素为他们在同一个地址空间内,线程最大的问题,公有变量的互斥访问

四、二分查找

22 34 55 77 89 93 99 102 120 140
0 1 2 3 4 5 6 7 8 9
假设低下标用low表示,高下标用high表示。
查找77:
开始low = 0, high = 9
第一次查找,找到中心的下标为(0+9)/2 = 4,即89,由于89大于77,所以,调整low = 0,high = 3(注意:由于知道下标为4的元素比77大,所以不会让high等于4,会有+1-1操作!)
第二次查找,找到中心的下标为(0+3)/2 = 1,即34,由于34小于77,所以,调整low = 2,high = 3
第三次查找,找到中心的下标为(2+3)/2 = 2,即55,由于55小于77,所以,调整low = 3,high = 3
第四次查找,找到中心的下标为(3+3)/2 = 3,即77,找到所要找的元素

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一共十五章,PDF格式…… 1 目录 第一章介绍 MENTAT与MARC程序的关系 MENTAT的文档 MENTAT的安装目录 MENTAT程序的屏幕布局 MENTAT与用户的通讯 MENTAT菜单光钮的分类 第二章网格生成 与有限元分析相关的常用词 与几何实体相关的常用词 网格生成方法1(网格的直接定义) 格栅的显示 格栅尺寸的显示 节点的生成 单元生成法 节点位置的修正 单元的删除 2 节点的删除 全部网格删除 网格生成方法2(由几何实体转化为网格) 控制点的生成 线的生成 CUBIC SPLINE(三次样条曲线)的生成 POLY LINE(多折线)的生成 Bezier 曲线的生成 圆弧、圆的生成 其它曲线 面的生成 四边形的生成 Bezier 曲面的生成 DRIVEN SURFACE(驱动面)的生成 RULER SUREACE(直纹曲面)的生成 SPHERE(球面)的生成 CYLINDER(圆柱、圆锥)面的生成 SWEPT SURFACE(扫描面)的生成 NURB SURFACE (NURB 曲面)的生成 3 实体的生成 几何实体与网格的转换 操作示范 单元表的指定方法 网格生成方法3(从几何实体自动生成网格) 其它前处理功能 ATTACH CHANGE CLASS CHECK CONVERT DUPLICATE EXPAND MOVE RELAX RENUMBER REVOLVE SOLIDS STRETCH SUBDIVIDE 4 SWEEP SYMMETRY 简例 (例题1)单元的直接定义 (例题2)几何实体转化为网格 (例题3)OVERLAY 网格划分 (例题4)ADVANCING FRONT 自动网格划分 第三章边界条件的定义(BOUNDARY CONDITIONS) BOUNDRAY CONDITIONS的 子菜单 MECHANICAL 边界条件名的定义 热传导边界条件的定义 TRANSFORMS(局部坐标系的定义) 边界条件定义举例(应力分析) 第四章初始条件的定义(INITIAL CONDITIONS) INITIAL CONDITIONS的子菜单 MECHANICAL(应力分析) 5 初始条件的定义 THERMAL (热传导分析) 第五章材料特性的定义 材料特性名的定义 MENTAT定义的材料特性 MECHANICAL MATERIAL OTHER MATERIAL(其它材料类型) 与材料特性相关的其它定义 材料常数的定义方法 材料特性定义举例 第六章选择功能(SELECT) 第七章表格功能的使用(TABLE) 第八章几何特性的定义(GEOMETRIC PROPERTIES) 3D单元几何特性的定义 轴对称单元几何特性的定义 平面单元几何特性的定义 接触/摩擦单元几何特性的定义 6 热传导单元的几何特性定义 几何特性定义举例(应力分析) 第九章接触条件的定义(CONTACT) 接触体的生成 CONTACT BODIES CONTACT TABLE CONTACT AREAS 第十章载荷工况的定义 分析类型的选择 LOAD CASE的定义 热传导分析时载荷工况的定义 第十一章定义作业参数并提交运行 JOBS PROCESSOR LOAD CASES ANALYSIS DIMENSION ANALYSIS OPTIONS CREEP TIME MODAL SOLUTION METHOD 7 DYNAMIC OPERATOR DYNAMIC HARMONIC VISCOELASTICITY JOB RESULTS INITIAL LOADS JOB PARAMETERS CONTACT CONTROL SOIL CONTROL ADAPTIVE MESHING CRITERIA ADDITIONAL PRINT ELEMENT TYPE RUN JOB JOBS操作举例 第十二章后处理(RESULTS) FILE SCALAR DEFORMED SHARP PLOT STYLE 8 PATH PLOT HISTORY PLOT ANIMATE ISOLATE ELEMS 第十三章静态菜单命令 静态菜单命令介绍 FILES菜单 PLOT菜单 VIEW菜单 第十四章练习 第十五章MENTAT的其它界面 MENTAT调用的外部程序 MARC Jobs 图形输出界面

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值