精易论坛

标题: 第九天作业 [打印本页]

作者: 老郭    时间: 2019-4-12 16:42
标题: 第九天作业


第九天课程作业


9.1 struct 结构的使用 与类的异同 内存分配 与 内存对齐

9.2 值传递与引用传递 ref 与 out 关键字





  1. 描述一下 Struct 与 Class 有哪些区别?




  2. 按照CLR的默认内存对齐方式计算出下面结构的内存大小


    struct Test(){
       public int a;
       public int b;
       public byte c;
    }

    struct Test2{
       public double a;
       public char b
       public int c;
    }

    struct Test3{
       public byte a;
       public double b;
       public byte c;
    }



  3. 如何实现值类型的参数引用传递?




  4. 描述一下 ref 与 out 关键字的使用场景





作者: qingshanlushui    时间: 2019-4-13 11:20

1、描述一下 Struct 与 Class 有哪些区别?
Struct:结构中可以包含方法、属性、索引器、事件;索引器不需要赋值也能使用;
           编译自动会给我们加上结构的空构造函数,而且额外自定义了构造函数;
           结构的成员修饰符可以包含public、private,但不能用protected(不能继承);
           结构可以实现接口;结构式值类型,在栈上分配内存。

2、按照CLR的默认内存对齐方式计算出下面结构的内存大小
4+4+4=12
8+4+4=16
8+8+8=24

3、如何实现值类型的参数引用传递?
ref 或 out 关键字

4、描述一下 ref 与 out 关键字的使用场景
参数传递引用的两种约定:
ref:在参数传入之前变量必须赋值
out:参数在函数返回之前必须赋值
作者: cw112    时间: 2019-4-14 21:00
本帖最后由 cw112 于 2019-4-14 21:03 编辑

描述一下 Struct 与 Class 有哪些区别?
Struct 实际上是以值类型存储,Class是以引用类型存储。(感觉好像是对的,但是不太确定)

按照CLR的默认内存对齐方式计算出下面结构的内存大小
struct Test(){
   public int a;
   public int b;
   public byte c;
}
struct Test2{
   public double a;
   public char b
   public int c;
}
struct Test3{
   public byte a;
   public double b;
   public byte c;
}
4+4+4=12
8+4+4=16
8+8+8=24
如何实现值类型的参数引用传递?
ref,out

描述一下 ref 与 out 关键字的使用场景
值类型参数需要以引用方式传递时。

来给大佬凑凑人qi。

作者: 曜石头    时间: 2019-4-29 18:52
1、描述一下 Struct 与 Class 有哪些区别?
Struct:结构中可以包含方法、属性、索引器、事件;索引器不需要赋值也能使用;
           编译自动会给我们加上结构的空构造函数,而且额外自定义了构造函数;
           结构的成员修饰符可以包含public、private,但不能用protected(不能继承);
           结构可以实现接口;结构式值类型,在栈上分配内存。

2、按照CLR的默认内存对齐方式计算出下面结构的内存大小
4+4+4=12
8+(4+4)=16 -> 8 +8=16
8+8+8=24

3、如何实现值类型的参数引用传递?
ref 或 out 关键字

4、描述一下 ref 与 out 关键字的使用场景
参数传递引用的两种约定:
ref:在参数传入之前变量必须赋值
out:参数在函数返回之前必须赋值
作者: 鱼塘是我的    时间: 2019-5-29 23:55
本帖最后由 鱼塘是我的 于 2019-5-29 23:57 编辑

第九天课程作业

9.1 struct 结构的使用 与类的异同 内存分配 与 内存对齐

 一、类 vs 结构

  类和结构有以下几个基本的不同点:

  类是引用类型,结构是值类型。

  结构不支持继承。

  结构不能声明默认的构造函数。

 二、类VS结构详细版随堂笔记

  结构中可以包含:方法、属性、索引器、事件

  索引器不需要赋值也能使用

  编译自动会给我们加上,结构的构造函数,而且自定义了构造函数,空的构造函数仍然有

  结构成员的修饰符可以包含:public private

  由于结构不能继承结构或者类,所以不能使用 protected 修饰符

  结构可以实现接口

  结构由于是值类型,因此在栈上分配内存

 三、内存分配 与 内存对齐

  操作系统的内存分配问题与内存对齐问题对于低层程序设计来说是非常重要的,对内存分配的理解直接影响到代码质量、正确率、效率以及程序员对内存使用情况、溢出、泄露等的判断力。而内存对齐是常常被忽略的问题,理解内存对齐原理及方法则有助于帮助程序员判断访问非法内存。

  C#中的结构体与类的区别

  C# 结构体(Struct)

  C内存分配和内存对齐

  c/c++深入篇之内存分配与内存对齐的探讨

9.2 值传递与引用传递 ref 与 out 关键字

  首先:两者都是按地址传递的,使用后都将改变原来参数的数值。

  其次:ref可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把一个数值从out传递进去的,out进去后,参数的数值为空,所以你必须初始化一次。这个就是两个的区别,或者说就像有的网友说的,ref是有进有出,out是只出不进。

  C#中out和ref之间的区别

  C#中ref和out关键字的应用以及区别






  i.class 引用类型,struct 值类型;

  ii.结构体不支持继承;

  iii.结构体不能声明默认的构造函数;




Delphi函数的out、var等关键字的作用,和使用场景








欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4