指向数据对象的指针
程序员文章站
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