字符串与字符数组、字符指针的赋值

本文详细探讨了字符串、字符数组、字符指针之间的转换与赋值操作,通过Delphi实例代码,阐述了字符串作为指针的本质,以及数组、字符串指针如何直接赋值给字符串,同时强调了字符串赋值给数据时需要拷贝的重要性。
摘要由CSDN通过智能技术生成
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm5 = class(TForm)
    btn1: TButton;
    btn2: TButton;
    btn3: TButton;
    procedure FormCreate(Sender: TObject);
    procedure btn1Click(Sender: TObject);
    procedure btn2Click(Sender: TObject);
    procedure btn3Click(Sender: TObject);
  private
    { Private declarations }
    FS: string;
    FA1: array [0..5] of Char;
    FA2: array of Char;
    FP: PChar;
  public
    { Public declarations }
  end;

var
  Form5: TForm5;

implementation

{$R *.dfm}

procedure TForm5.btn1Click(Sender: TObject);
begin
  Caption := Format('FS addr is %d, FP is %d', [Integer(FS), Integer(FP)]);      //相等
end;

procedure TForm5.btn2Click(Sender: TObject);
begin
  StrCopy(@FA1, PChar(FS));   //字符串值给数据需要拷贝;  StrCopy不需要输入长度
  Caption := FA1;             //字符数组可以直接赋值给字符串
end;

procedure TForm5.btn3Click(Sender: TObject);
begin
//  StrCopy(@FA2, PChar(FS));          //异常
//  Caption := PChar(FA2);             //动态数组不能直接赋值给字符串

  StrCopy(PChar(FA2), PChar(FS));     //说明FA2应该是指针
  Caption := PChar(FA2);              //动态数组转化成字符指针之后赋值给字符串
end;

procedure TForm5.FormCreate(Sender: TObject);
begin
  FS := '123456';
  FP := PChar(FS);
  SetLength(FA2, 6);
  Caption := PChar(FS)^;     //FS确实是字符串的首地址
end;

/// <remarks>
///  1:字符串其实是一指针
///  2:数组、字符串指针都可直接赋值给字符串
///  3:字符串赋值给数据需要拷贝
/// </remarks>
///
end.

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值