使用常规变量是,值是指定的量,地址是派生的量。处理存储数据的新策略刚好相反,将地址值是为指定的量,而将值视为派生量,一种特殊类型的变量--指针,用于存储值得地址。因此,指针名表示的是地址,*运算符被称为间接值或者解除引用运算符,将用于指针,可以得到该地址处存储的值(这和乘法使用的符号相同;C++将根据上下文来确定所指定的是乘法还是解除引用)。
#include<iostream>
#include<stdlib.h>
#include<string.h>
using namespace std;
int main()
{
int nlen=10;
/*
* 定义一个指针变量nplen,
* * (间接值运算符或者解除引用运算符),可以应用于指针
*/
int*nplen;
nplen=&nlen;
//值10有两种表示方式
cout<<nlen<<endl;
cout<<*nplen<<endl;
//地址值有两种表示方式
cout<<nplen<<endl;
cout<<&nlen<<endl;
//通过指针修改变量
*nplen=20;
cout<<nlen<<endl;
cout<<*nplen<<endl;
//通过变量修改指针
nlen=30;
cout<<nlen<<endl;
cout<<*nplen<<endl;
cin.get();
cin.get();
return 0;
}
int 变量nlen和指针变量nplen只不过是一个硬币的两个面,变量nlen表示值,并使用&运算符来获取地址;而变量nplen表示地址,并使用*运算符来获取值。由于nplen指向nlen,因此*nplen和nlen是完全等价的。可以像使用nlen变量那样使用*nplen。甚至可以将值付给*nplen,这样将修改指向的值,即nlen;
判断2个数值是否存储在两个连续的内存地址
#include<iostream>
#include<stdlib.h>
#include<string.h>
using namespace std;
int main()
{
int a=5;
double b=6.0;
cout<<&a<<endl;
cout<<&b<<endl;
cin.get();
cin.get();
return 0;
}