指针的几个注意点
<1>首先要明白指针的变量名是什么,如int *p;它的变量名是p而不是*p;
<2>指针一定是只能保存地址,而保存地址使用的是指针的变量,所以是用变量名p=&a,而不是*p = &a(定义时除外)。
<3>声明定义时的*和后面操作时的*的含义是不同的,如int *p 正如int* p ;表示的是定义一个指针变量,而后面操作时*p = 10;表示的是去操作指针指向的那个地址的内容。
<4>指针变量必须要初始化,否则不知道指向哪个地址。
<5>指针就是用来存放地址的,并且可以通过这个地址来操作对应的内容。只要知道了一个变量的内存地址,那么我们就可以通过指针来操作块内存空间。
#include
#include
int main()
{
int a=10;
int* p=&a;
printf("%p
%p
",&a,p);
printf("%d
%d
",a,*p);
*p=20;
printf("
%p
%p
",&a,p);
printf("%d
%d
",a,*p);
system("pause");
}
上面的int *p=&a,即将指针p指向a的地址。此时p保存的是变量a的地址,*p保存的是a的值。可以从输出结果中看出二者地址和值都是一样的。
接下来直接对*p进行赋值,实际上改变的是这个地址空间的存储值,因此此时输出的a和*p都是20;