指针
指针
指针是一种比较复杂的数据类型。
一、指针的基本定义
指针定义基本语法如下:
int *p=NULL;//指针
int a;//辅助
p=&a;//将a的位置赋予p
其中 ,\(NULL\) 是指针中的一种特殊的值,代表 空指针 ,相当于 \(int\) 中的 "\(0\)"。
特殊地,若 \(a\) 变化,则 \(p\) 内的值也要变化。也就是说, 一个指针与其绑定的数据类型是一一对应的 。
二、指针的引用与运算
指针也可以进行运算:
int *p=NULL,*p1=NULL;
int a,b;
p=&a;
p1=&b;
a=10;b=20;
cout<<*p**p2; //乘法
指针有几种初始化方式:
int *p=NULL;//空指针
int *p2=new(int);//申请一个随机空间
int a;
int *p3=&a;//初始化a的地址
指针可以没有类型之分,即无类型指针:
它可以根据不同的情况随意变换自己的类型:
void *p;
int a=114514;
double b=3.1415926;
p=&a;
cout<<*(int*)p;
p=&b;
cout<<*(double*)p;
指针还可以指向自身:
int a=114514;
int *p;
int **pp;
p=&a;
pp=&p;
cout<<**pp;
三、数组指针
数组内也能用到指针,指针可以用于遍历数组内的每个数:
int *p=NULL,a[101];
for(int i=1;i<=n;i++)
cin>>a[i];
p=&a[1];
for(int i=1;i<=n;i++){
cout<<*p<<" ";
p++;
}
也可以用以下形式:
int *p=NULL,a[101];
for(int i=1;i<=n;i++)
cin>>a[i];
p=a;
for(int i=1;i<=n;i++){
cout<<*(a+i)<<" ";
}