3.1 定义
指针就是地址。
指针变量定义形式:  类型说明符  *变量名     例如:int  *a;
含义:定义了一个int *类型变量,名称为a。(只能存储int *类型)
注意:int *类型和int 类型不一样。
3.2 指针的赋值
实际操作中,“&”符号表示“取地址符”。(区别与&&和按位与&,使用场景不同)。比如下面的代码:
1.  #include<iostream>
2.  #include<cstdio>
3.  using namespace std;
4.  int main() {
5.   int a=3;
6.   int *p=NULL;
7.   p=&a;
8.   cout<<"a的值"<<a<<endl;  //3
9.   cout<<"p的值"<<p<<endl;  //0x22fe34
10.  cout<<"*p的值"<<*p<<endl; //3
11.  return 0;
12. }
其中,第7行的“&”表示取变量a的地址,赋值给p变量,而p是指针类型,可以保存地址。
用scanf读取数据的时候,也会写作scanf(“%d”,&a); 这里面的“&”也是取地址符号。
第10行的结果是3,也就是a的值,这里可以这样理解:因为p是int *类型,*p等价于*(int *),这里可以“负负得正”的思想来记录结果,也就是指向了int *这个指针所指向的变量。
3.3 指针与数组
  指向数组的指针变量称为数组指针变量。“数组是内存上一块连续的空间”。数组名就是这块连续空间的首地址。
1.  #include<iostream>
2.  #include<cstdio>
3.  using namespace std;
4.  int main() {
5.   int a[10];
6.   for(int i=0; i<5; i++) {
7.    scanf("%d",a+i); 
8.   }
9.   for(int i=0; i<5; i++) {
10.   printf("%d ", *(a+i)); 
11.  }
12.  return 0;
13. }