频道分类

Delphi结构,字符串和指针

作者:admin 来源: 日期:2020/9/27 22:31:33 人气: 标签:

 
C 语言版


#include <stdio.h>
#include <stdlib.h>

//结构体声明
typedef struct {
    int num;
    char *str;
} strct;

int main(void) {
   //生成指针类型变量
    strct *entity;

     //确保动态内存
    entity = (strct*)malloc(sizeof(strct));

    //初始化成员
    entity->num = 0;
    entity->str = (char*)malloc(sizeof(char) * 32);

    //将一个字符串分配给内存
    sprintf(entity->str, "%s %s!", "Hello", "World");
    printf("%s\n", entity->str);

    // 释放
    free(entity->str);
    free(entity);

    return 0;
}



ANSI_Delphi版
program Project1;

{$APPTYPE CONSOLE}

uses
  System.SysUtils;

type
//结构体声明
  Tstrct = record
    num: Integer;
    str: PChar;
  end;
  // 構造体へのポインタの定義
  Pstrct = ^Tstrct;

var

  entity: Pstrct;
begin
  // メモリの確保
  GetMem(entity, SizeOf(Tstrct));

 //初始化成员
  entity^.num := 0;
  GetMem(entity^.str, SizeOf(Char) * 32);

    //将一个字符串分配给内存
  StrPCopy(entity^.str, Format('%s %s!', ['Hello', 'World']));
  Writeln(entity^.str);

  // 释放
  FreeMem(entity^.str);
  FreeMem(entity);
end.



Unicode_Delphi版
program Project1;

{$APPTYPE CONSOLE}

uses
  System.SysUtils,
  System.AnsiStrings;

type
//结构体声明
  Tstrct = record
    num: Integer;
    str: PAnsiChar;
  end;
  // 構造体へのポインタの定義
  Pstrct = ^Tstrct;

var
  // 構造体へのポインタの変数
  entity: Pstrct; // [1]
begin
  // メモリの確保
  GetMem(entity, SizeOf(Tstrct)); // [2]

   //初始化成员
  entity^.num := 0; // [3]
  GetMem(entity^.str, SizeOf(AnsiChar) * 32); // [4]

  //将一个字符串分配给内存
  System.AnsiStrings.StrPCopy(entity^.str, AnsiString(Format('%s %s!', ['Hello', 'World']))); // [5]
  Writeln(entity^.str);

  // 释放
  FreeMem(entity^.str); // [6]
  FreeMem(entity); // [7]
end.