设定指针的地址和初始化

首先,我很抱歉我的英文不好,这不是我的第一语言。

这是我第一次来研究关于指针,我发现财产以后很奇怪。

这本书我读说*标记是指一个变量的'啪'表示。

但是,当我尝试并初始化一个指针

int a; int *pA =&a;

(他们用*pA在这种情况下),然后改变它,

* PA =&A;

不工作,

PA =&A;

作品。

所以,我的查询是“有没有初始化的指针,只是代有什么区别?”

--------------解决方案-------------

int a;

这在栈上分配的整数

int* pA = &a;

这在栈上分配一个int指针,并将其值设置为指向。 在'*'是声明的一部分。

*pA = &a;

在这种情况下,“*”是一个操作符,说:“看,其中pA的点”,这是一个int。 你然后试图这个int设定为一的地址,这是不允许的。

pA = &a;

现在,这是一样的第二条语句。 它设置pA的值,以指向。

当你创建你用一个指针

int *pA;

然后,用*pA意思你所访问价值指向指针

当您使用&a正在使用的地址,对操作员返回,其中数据存储变量的存储位置的地址a (这是一个整数)存储。

因此,正确的分配是pA = &a因为你复制的地址, apA这是应该持有的内存位置的地址。

但是*pA代表该内存位置(整数)的值,因此是不正确的地址分配给*pA -这就是为什么正确的语法是pA = &a

是啊,当你第一次声明一个指针,可以指定内存地址。 因为你宣布它为指针,使用*操作符。 但是其他地方一样,在*pA手段,采取由指针(而不是实际的地址)中引用的值。 这是一个有点怪,但你习惯了它。

所以,你可以这样做:

int a;
int *pA = &a;

你可以这样做:

pA = &a;

但是,你不能这样做:

*pA = &a;

因为,上面写着:“让指向的值pA =为a的值。”

但是,你可以这样做:

*pA = a;

而这仅仅是如何设置的值指向pA的。 希望这是有点清晰。

在C语言中,“申报模仿使用”。

在声明指针int

int *pa;

你可以看到paint **paint

您可以将指针为int到pa或分配到整数*pa
这就是为什么,在上述声明之后,下面的语句“工作”。

*pa = 42;
pa = &a;

在声明本身,你可以“改造”它的定义通过提供一个初始值。 的定义是对象pa类型int*而不是为*pa

int *pa = &a; /* initialize pa, which takes a `int*` */
pa = &b; /* change `pa` with a different `int*` */
*pa = 42; /* change the value pointed to by `pa` */

分类:C# 时间:2015-03-15 人气:0
本文关键词: C#
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.202 (s). 10 q(s)