深入浅出学习C、C++、Delphi等编译型语言中的指针

8 篇文章 1 订阅

当前主流的编译型编程语言只有C/C++、Delphi等,指针是一个功能强大的功能,作为专业程序员必须理解并弄懂指针,泰山老父从不废话,看代码:

VS2019 C++控制台程序代码:

// Project1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>

int main()
{
    std::cout << "如何理解C/C++和Delphi编译型语言中的指针?\n";
    //应用软件被操作系统加载运行后,操作系统就在内存中会为该程序分配一块内存,这块内存可以理解成一个剧场,剧场中有很多椅子座位,这些椅子座位用来存放常量、变量等数据;
    int a = 10, b = 20;//在内存剧场中a,b两把椅子分别存放了10、20两个整形变量;
    int* pa, * pb;//定义了2个整形指针变量,指针(指示器)就是指向内存剧场的一把椅子的位置地址,pa就是一个指向这把椅子的指针变量(类似一个指示器,可以随便指向内存剧场中任何一把椅子,但是指向的这把椅子只能存放int整型);
    pa = &a;//现在这个pa指针(指示器)指向了另一把椅子a的位置地址:&a;
    pb = &b;//现在这个pb指针(指示器)指向了另一把椅子b的位置地址:&b;
    std::cout << "a=" << a << ",b=" << b << std::endl;//直接输出a,b两把椅子变量存放的内容
    std::cout << "a=" << *pa << ",b=" << *pb << std::endl;//通过指针(指示器)指向的地址内容输出,前面加上*号就是取出该地址椅子上的内容    
    std::cout << "&a=" << pa << "&b=" << pb << std::endl;//输出pa、pb现在指向的椅子内存地址;
}

// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单

// 入门使用技巧: 
//   1. 使用解决方案资源管理器窗口添加/管理文件
//   2. 使用团队资源管理器窗口连接到源代码管理
//   3. 使用输出窗口查看生成输出和其他消息
//   4. 使用错误列表窗口查看错误
//   5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目
//   6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件

Delphi 10.3.3控制台程序代码:

program Project1;

{$APPTYPE CONSOLE}
{$R *.res}

uses
  System.SysUtils;

var
  a, b: integer;
  pa, pb: ^integer;

begin
  try
    { TODO -oUser -cConsole Main : Insert code here }
    Writeln('如何理解C/C++和Delphi编译型语言中的指针?');
    a := 10; // 在内存剧场中a,b两把椅子分别存放了10、20两个整形变量;
    b := 20;
    pa := @a; // 现在这个pa指针(指示器)指向了另一把椅子a的位置地址:&a;
    pb := @b; // 现在这个pb指针(指示器)指向了另一把椅子b的位置地址:&b;
    Writeln('a= ' + a.ToString   + ',b=' + b.ToString);
    Writeln('a= ' + pa^.ToString + ',b=' + pb^.ToString);
    Writeln('@a=' + inttohex(integer(@pa), 8) + ',@b=' + inttohex(integer(@pb), 8));
    Readln;//避免在IDE中控制台自动退出
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;

end.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值