指针就是一个地址,是C的精髓所在
1,先看一下基础的完整代码
#include<iostream>
using namespace std;
#include<string>
int main()
{
//****定义指针*****
int a=10;
int*p;
p=&a;//让指针记录变量a的地址
cout<<"a的地址为;"<<&a<<endl;//输出a的地址用&a
cout<<"指针p为;"<<p<<endl;
//****使用指针****
//可以通过解引用的方式来找到指针指向的内存
//指针前加*代表解引用,找到指针指向的内存中的数据
*p=1000;
cout<<"a="<<a<<endl;
cout<<"*p="<<*p<<endl;
system("pause");
return 0;
}
代码部分我用C++写的,也可以用C来写
下面是代码的运行结果
解释*p,&p
首先就是定义一个指针,可以用 int *p;,指针是一个什么东西呢,我用自己的理解来大白话的解释一下,指针就是一个地址,现在你定义了一个整型 int a=10;关于a的值肯定存储在计算机的某一个位置,我把它称为a的家,然后令p=&a,这个就是让指针p去找到并且记录一下a的家在哪,并且也让指针p也先住在a的家里,这时a的家里还住着我们给他复制的10,这时候a 的地址和指针p的地址就相同了,p到人家家里了,肯定不能闲着,这时候令*p=1000,这句话官方定义就是解引用,在我看来,就是鸠占鹊巢,把自己的东西(1000)强塞进a的家里,这时候再输出a的值的时候就是1000,就是鸠占鹊巢
相当于把a的家偷了,a的值是从家里取的,指针的指向是确定a家的位置(p=&a) ,*p是去偷家,并用自己的值来代替a,相当于是鸠占鹊巢
看看代码再看看运行结果我觉得应该能理解指针