欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

指向数据对象的指针

程序员文章站 2024-01-01 17:20:10
...

什么是数据对象?

(1)是内存中一段定长的、以Byte为基本单位的连续区域
(2)这段内存区域中的内容表示具有某种类型的一个数据

注:数据对象的类型不一定是简单数据类型(int,long,double等),
也可以是派生类型,比如数组,甚至指针等。
当说到某个指针指向”i“时,其确切含义是指向”i“所占据内存的整体。
eg.指向Int类型数据的确切含义是指向一块大小为 sizeof(int ) 的内存空间。

一元"&"运算

1、
作为二元运算符&是按位与运算。
作为一元运算符时,要求它的运算对象时一个左值表达式(一块内存),
得到的是指向这块内存(类型)的指针。

&d 是个指针,指向一块内存。
&d的值是”d“所占据内存单元中的第一个byte的编号。

%d就是一个既不可以通过代码被赋值,也不可以通过代码被改变的值,因而是常量,叫做指针常量

2、 指针类型数据的输出格式是 ”%p“

指向数据对象的指针
在表达式&d中d表示的仅仅是变量所在的内存,并不表示这块内存的值。

定义指针变量

int *p;

指针的赋值运算

int *p;
int i;
p=&i;   //&i是一个指向int 类型数据的指针常量,p是指向int 类型的指针变量

注:对指针赋值的一般原则:应该同样类型的指针进行赋值。例如下面不对,尽管有些编译器能容忍的

double d;
long * p;
p=&d;

*指针运算符

运算符叫做间接引用运算符,其运算对象是一个指针,运算结果是指针所指向的那块内存(左值)或那块内存中的数据(右值)
*&和 *** 运算符的含义中得知:
对于任何一个变量a, * &a就是a,可以作为左值也可以作为右值使用。
反过来对于任何一个指针 p,只要p 指向一个变量,那么& * p就是p

上一篇:

下一篇: