目录
一.指针
#include<iostream>
using namespace std;
#define pi 3.14159//定义常量
int main(){
cout<<pi<<endl;
int a=10;
int *p=NULL;//定义指针
p=&a;
cout<<"a的地址为:"<<p<<endl;
cout<<"a="<<*p<<endl;
return 0;
}
1.指针的作用
通过指针可以间接访问内存
- 内存编号是从0开始记录的,一般用十六进制数字表示。
- 可以利用指针变量保存地址。
2.指针的定义与使用
语法:数据类型 * 变量名。 int *p;
(1)一级指针:
<1>.定义,赋值与输出:
#include<iostream>
using namespace std;
int main()
{
int a=10,b=11;
int *p=&a;
int *t=NULL;//定义一个指针
t=&b;//&取地址
cout<<"指针t:"<<*t<<endl<<"b的地址:"<<&b<<endl<<"b="<<b<<endl;
return 0;
}
(2)二级指针
<1>.二级指针的定义,赋值与输出
#include<iostream>
using namespace std;
int main()
{
int a=10;
int *p=&a;
int **pp=&p;
cout<<"*p:"<<*p<<endl<<"&a:"<<&a<<endl<<"a:"<<a<<endl<<"**pp:"<<**pp<<endl<<"&pp:"<<&pp<<endl<<"&p:"<<&p;
return 0;
}
*p:10
&a:0x6ffdfc
a:10
**pp:10
&pp:0x6ffde8
&p:0x6ffdf0
#include <iostream>
using namespace std;
int main()
{
int i = 9, t = 10, k = 11;
int *p = &i;
int *m = &i; // 一级指针p,m
int **pp = &p;
int **mm = &m; // 二级指针pp,mm
cout << "一级指针*p=" << *p << endl
<< "二级指针**pp=" << **pp << endl;
cout << "一级指针*m=" << *m << endl
<< "二级指针**mm=" << **mm << endl;
cout << "修改一级指针的内容后:" << endl;
*p = t;
cout << "一级指针*p=" << *p<< endl
<< "二级指针**pp=" << **pp << endl;
cout << "修改一级指针的指向后:" << endl;
*mm=&k;
cout << "一级指针*m=" << *m << endl
<< "二级指针**mm=" << **mm << endl;
return 0;
}
<2>.二级指针的步长:
所有类型的二级指针,由于均指向一级指针类型,并且所有一级指针类型大小是 4,
所以二级指针的步长也是 4。
<3>.改变n-1级指针的指向:
可以通过一级指针,修改 零级指针(变量)的内容。
可以通过二级指针,修改一级指针的指向。
可以通过三级指针,修改二级指针的指向。可以通过四级指针,修改三级指针的指向。
·····
可以通过修改 n 级指针,从而间接修改 n-1 级指针的指向。
3.空指针与野指针
空指针ÿ