指针存放变量的地址,因此指针名表示的是地址,就像变量名表示变量的值一样。
*运算符也被称为“间接值 ”或者“解除引用”运算符,将它用于指针,可以得到该地址内存中存储的值。
变量和指向变量的指针就像同一枚硬币的两面。int no=38; int* ptr=&no;
&no与ptr是一样的,都是表示地址0xA00F。
no与*ptr是一样的,都表示值38.
#include <iostream>
using namespace std;
int main()
{
int a=3;
int8 p=&3;
cout<<"a="<<a<<endl;
cout<<"*p="<<*p<<endl;//两句输出结果一致
*p=8;//与a=8效果一致
a=8;
cout<<"a="<<a<<endl;
cout<<"*p="<<*p<<endl;//输出值
cout<<"变量a的地址是:"<<(long long)&a<<endl;
cout<<"变量a的地址是:"<<(long long)p<<endl;
}
程序在存储数据的时候,必须跟踪三种基本属性:
数据存储在哪里,数据是什么类型,数据的值是多少。
用两种策略可以达到以上目的:
1、声明一个普通变量,声明时指出数据类型和变量名(符号名),系统在内部跟踪该内存单元。
2、声明一个指针变量,存储的值是地址,而不是值本身,程序直接访问该内存单元。
在程序中,变量的地址是它在内存中的起始地址,数据类型决定了占用内存的大小,决定了系统如何操作数据。变量和指针都可以达到操作内存的目的,使用变量的时候,我们不需要知道它的地址,系统在内部会跟踪它的内存单元。使用指针的时候,指针存储的是地址,程序可以直接访问内存单元。