修饰符(动态String数组篇)--- 常用 解除疑问。

1.无修饰符----是直接传基本类型的地址过来,并没有把基本类型的指针复制一份入栈,所以一旦修改就是修改原来的值。

2.const 修饰符 与 无修饰符一致。

3.var修饰符 与 上一致。

4.out修饰符(不要初始化,初始化也没有意义)

unit Unit4;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm4 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form4: TForm4;

implementation

{$R *.dfm}

procedure abc1(ap: TArray<string>);
begin
  ap[0] := ‘李大嘴1‘;
end;

procedure abc2(const ap: TArray<string>);
begin
  ap[0] := ‘李大嘴2‘;
end;

procedure abc3(var ap: TArray<string>);
begin
  ap[0] := ‘李大嘴3‘;
end;

procedure abc4(out ap: TArray<string>);
begin
  SetLength(ap, 3); //因为out的作用主要是输出,所以需要再这里进行分配内存,否则会报错
  //.out 修饰的东西会被当成栈中一个不指向堆中任何数据的空指针.
  ap[0] := ‘李大嘴4‘;
end;

procedure TForm4.Button1Click(Sender: TObject);
var
  vt: TArray<string>;
begin
  SetLength(vt, 3);
  vt[0] := ‘小李飞刀‘;

  abc4(vt);
  Memo1.Lines.Add(vt[0]);

  //动态数组也不需要释放,delphi会自动释放,可以看下面的汇编截图,与接口的引用计数释放方式又不同.
  //ip.Free;
end;

procedure TForm4.FormCreate(Sender: TObject);
begin
  ReportMemoryLeaksOnShutdown := True;
end;

end.
时间: 2024-11-10 01:30:17

修饰符(动态String数组篇)--- 常用 解除疑问。的相关文章

Java修饰符和String

修饰符 Java修饰符主要分为俩类: 访问修饰符:private.default.protected.public 非访问修饰符:static.final.abstract.synchronized 访问修饰符权限 修饰符 当前类 同一包类 子类 其他包 public Y Y Y Y protected Y Y Y N default Y Y N N private Y N N N private 被private修饰的变量.方法仅限在本类中使用 所以private是最严的的访问级别,主要用于隐

java构造函数修饰符

今天看了剑指offer中的第二章-面试需要的基础知识,对其中的一段C#面试代码,比较感兴趣,想着能否给改成java,结果没改成,出现了问题,本文是针对这一点来总结一下,下面是C#与java代码,但是在eclipse环境下,java代码如此改写,编译器提醒构造函数有问题,究其原因,问题是由java的构造函数前的访问修饰符public与特殊修饰符static所导致的. java 构造函数,可以被访问修饰符修饰,而不能被特殊修饰符修饰:(在编译器经过测试) 访问修饰符: public (最常用,其他类

Java 修饰符

Java语言提供了很多修饰符,主要分为以下两类: 访问修饰符 非访问修饰符 修饰符用来定义类.方法或者变量,通常放在语句的最前端.我们通过下面的例子来说明: public class className { // ... } private boolean myFlag; static final double weeks = 9.5; protected static final int BOXWIDTH = 42; public static void main(String[] argum

修饰符(动态数组篇)

1.无修饰符----要看成员变量的类型,与基本类型不一致,是直接传基本类型的地址过来,并没有把基本类型的指针复制一份入栈,所以一旦修改就是修改原来的值. 2.const 修饰符 与 无修饰符一致. 3.var修饰符 与 上一致. 4.out修饰符(不要初始化,初始化也没有意义) unit Unit4; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,

Java基础——常用修饰符分析

在学习Java基础时会时不时用到一些修饰符,这些修饰符修饰的内容不一样,作用域也不一样,只有梳理清楚才能正确的使用它们. 不同修饰符修饰内容的作用域 public public公共的,表示该属性(或方法)公开,所有用户都可以直接进行调用. default缺省 default表示默认,不仅本类访问,而且是同包可见. private private私有的,表示该属性(方法)为只有本类内部可以访问(类内部可见).(想用private还要用set和get方法供其他方法调用,这样可以保证对属性的访问方式统

java——关于数组的定义 和 访问修饰符的修饰内容

public class Shuzu { public static void main(String[] args) { // 定义数组 必须初始化长度,没有初始化要放数据 int[] in = { 1, 2, 3, 4, 5, 6 }; // 第一种方法:直接赋值 for (int i = 0; i < in.length; i++) { System.out.print(in[i] + "\t"); } System.out.println(); int[] in1 = n

MySQL的数据类型及其常用修饰符详解

MySQL的数据类型及其常用修饰符详解 ================================================================================ 概述: ========================================================================================== Mysql的数据类型     在mysql数据库当中,每一个库都是有多张表来组成的,每一个表都是由行和列来组

C语言常用修饰符

前言 这两天在梳理自己C语言的知识,发现写了这么久的代码,居然所有的知识点都在自己的脑袋里.这可不好,万一老了呢.... 接下来的几天里,会以文字的形式,将这些知识整理出来,分享给大家. 想要看看英文版本的同学,可以详细阅读 http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf C语言存储类别说明符 存在类别说明符 (storage-class-specifier)包含:typedef, extern, static, _Thread

新年在家学java之基础篇-参数&amp;修饰符&amp;构造器

可变参数 不知道可能给方法传递多少个参数时使用这个方法 public void printInfo (String[] args) --可以定义一个数组,在调用这个方法适合赋值给一个数组 public void aaa (String... args) --用java特有的...来传递可变个数的参数,在使用时,与数组的使用方式相同 如果使用数组,在调用方法是要用 a.printInfo(null):没有参数就要定义一个空数组或者null,而第二种是可以直接使用a.aaa(); 如果一个方法有多个