变量的地址称为指针
int a=100;
int *p;//定义指向整型数据的指针变量p,*号代表此变量是一个指针变量。知道了数据类型int, 才知道怎么从p这个地址中取值
p=&a;//将变量a的地址赋给指针变量p
cout<<*p; //*p代表p指向的变量
*p=3; //相当于a=3,即将3赋给p指向的存储单元。
以下是错误的,因为没有了p=&a这一步,则p是一个野指针,指向未知的存储单元:
int *p;
*p=3; //相当于向一个位置的存储单元赋值
指针传参:
void F(int *p1,int *p2)
{
*p1=1; //把1赋值给p1所指向的存储单元
*p2=2; //把2赋值给p2所指向的存储单元
}
int main()
{
int a,b;
int *p1,*p2;
p1=&a; p2=b;
F(p1,p2);
}
指针引用数组元素:
int a[100];
int *p=a; //注意是p=a不是p=&a,因为a是数组不是变量,a已经是数组首元素地址了
cout<<*(p+i); //相当于cout<<a[i],p是一个地址,p+1时实际上是p+sizeof(int)。a[i]中的[]实际 上是变址运算符,相当于是*(a+i)