文档章节

关于指针初始化的问题 - 回复"下雨天2"

涂孟超
 涂孟超
发布于 2014/09/26 15:33
字数 267
阅读 5
收藏 0
问题来源: http://www.cnblogs.com/del/archive/2008/05/02/1179416.html#1179645

一个全局变量可以初始化, 如果你不主动初始化, 也会被自动初始化;
一个局部变量不能被初始化, 虽然你不能主动初始化, 但它会被赋予一个随机值.
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

var
  i1: Integer; {会被自动初始化为 0}
  p1: Pointer; {会被自动初始化为 0, 也就是空指针}
const
  BoolStr: array[Boolean] of string = ('False','True');

procedure TForm1.FormCreate(Sender: TObject);
var
  i2: Integer; {会被初始化为一个随机值}
  p2: Pointer; {会被初始化为一个随机地址}
  b: Boolean;
begin
  ShowMessage(IntToStr(i1));          {0}
  ShowMessage(IntToStr(i2));          {14909552}
  ShowMessage(IntToStr(Integer(p1))); {0}
  ShowMessage(IntToStr(Integer(p2))); {4570636}

  {判断 p1、p2 两个指针是否是已赋值}
  b := Assigned(p1);
  ShowMessage(BoolStr[b]);  {False}
  b := Assigned(p2);
  ShowMessage(BoolStr[b]);  {True}

  {释放指针后再判断}
  p1 := nil;
  p2 := nil;
  b := Assigned(p1);
  ShowMessage(BoolStr[b]);  {False}
  b := Assigned(p2);
  ShowMessage(BoolStr[b]);  {False}
end;

end.

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2008/05/02/1179755.html

涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
转帖关于new/delete的运算符和malloc()/free()的标准库函数

new--------delete malloc--------free 问题: 我又一个对象类,里面有一个指针链表,动态分配空间,在析构的时候释放。开始对对象进行new操作,但是执行delete对象操作的时候出错,提示在析...

lixun
2012/08/29
0
0
别再写 bug 了,避免空指针的 5 个案例!

空指针是我们 Java 开发人员经常遇到的一个基本异常,这是一个极其普遍但似乎又无法根治的问题。 本文,栈长将带你了解什么是空指针,还有如何有效的避免空指针。 什么是空指针? 当一个变量...

Java技术栈
01/18
0
0
使用static与const关键字时需要掌握的知识

static: 1、不考虑类,static的作用: 1)第一个作用:隐藏。使得全局变量和函数对其它文件不可见,同时避免了不同文件的命名冲突。 2)第二个作用:默认初始化为0。未初始化的全局静态变量和局...

shenhuan1104
2018/01/11
0
0
VC++常用数据类型及其操作详解(非常经典,共同分享)

友情提示: 为了方便你更好的学习和阅读,也更好的体现尊重原创作者的劳动成果,请您直接查看转载原本链接: http://snailflying.blog.hexun.com/8219350_d.html =========================...

长平狐
2013/01/06
1K
0
C/C++ 指针小结——指针的概念和如何使用指针

一、理解指针 当我们声明一个变量时,系统会在内存中分配适当的存储空间,以保存该变量的值,由于每一个字节都有唯一的地址编号,因而内存存储空间都有自己的地址编号。又由于内存地址只是编...

刘太刚
2018/07/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

好文:华杉:我等用功,不求日增,但求日减。减一分人欲,则增一分天理,这是何等简易!何等洒脱!

华杉华与华营销咨询公司董事长 华杉 做企业就得遵守三大定律 今天我给大家带来的这个题目比较大,叫做《企业三大定律》。 首先我们得明白定律是什么? 定律在英文里面叫law,定律就是法律。做...

阿锋zxf
13分钟前
1
0
vue 的bus总线

bus声明 global.bus = new Vue() 事件发送 controlTabbar () {global.bus.$emit('pickUp', 'ddd')}, 事件接收 global.bus.$on('pickUp', (res) => {this.isFocus = true})......

Js_Mei
18分钟前
2
0
大型系统演进之路-负载均衡演进

Nginx做负载均衡 通过Nginx的反向代理将请求分发到tomcat中,如果tomcat支持100并发,Nginx支持50000并发,理论上nginx把请求发送到500个tomcat就可以了。 LVS或F5做多个Nginx负载均衡 Tomc...

春哥大魔王的博客
23分钟前
4
0
Sqlite时间段查询中遇到的问题

问题: 我要查询DateTime时间其中的一段符合时间要求的数据,比如我要查询‘2019-06-06 16:50:00’至‘2019-06-06 16:59:00’这一段的数据 开始用这段代码 strSql= ("select * from Coll...

rainbowcode
26分钟前
2
0
大数据(hadoop-数据入库系统Sqoop原理架构)

Sqoop是什么 Sqoop:SQL-to-Hadoop 连接传统关系型数据库和Hadoop的桥梁 把关系型数据库的数据导入到 Hadoop 系统 ( 如 HDFS、HBase 和 Hive) 中; 把数据从 Hadoop 系统里抽取并导出到关系型...

这很耳东先生
41分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部