当前主流的编译型编程语言只有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.