指针用于“存放内存单元地址”
声明:数据类型 *标识符;//形如 int *p;//存放int数据类型的地址
数据在定义的时候程序就已经为其分配内存空间
其中关于* 和 &
作为一元操作符时
int *p;//*声明指针
int a;
int *ptr=&a;//&取地址,&作为参数传入函数的时候是引用
指针的赋值
int a;
int *p=&a;//指向a地址的指针
等价于
int a,*p;
p=&a;
ok,我们来看一下数组
数组名实际上是一个不能被赋值的指针(指针常量)
接下来我们可以通过指针来取出数组中的数据
#include<iostream>
using namespace std;
int main(){
//对于指针的学习笔记;
//指针是用来存放数据的内存单元地址的,声明一个变量的时候就已经为该变量申请内存空间
cout<<"指针是用来存放数据的内存单元地址的,声明一个变量的时候就已经为该变量申请内存空间"<<endl;
int a=1;//已经为a分配空间
int *p=&a,*pa;
pa=&a;//指向int型数据地址的指针,也就是说int *p=&a等价于int *p;p=&a;
cout<<"p="<<p<<endl;
cout<<"*P="<<*p<<endl;
cout<<"pa="<<pa<<endl;
cout<<"*pa="<<*pa<<endl;
cout<<"-------------------------\n测试:\n";
//进阶,我们知道数组的名字表示首地址,我们用指针来打印数组
int array[]={1,9,9,8,0,8,22};//七个元素
int *ptr=array;//声明指针的时候指向数组第一个元素的地址 也等价于int *ptr;ptr=array;
//等价
// int *ptr;
// ptr=array;
for(int i=0;i<7;++i){
cout<<*(ptr+i)<<" ";
}
cout<<endl;
return 0;
}
上面是我测试的时候用的,简化一下
#include<iostream>
#include<stdlib.h>
using namespace std;
int main(){
system("color 3");
cout<<"-------------------------\n测试:\n";
//进阶,我们知道数组的名字表示首地址,我们用指针来打印数组
int array[]={1,9,9,8,0,8,22};//七个元素
int *ptr=array;//声明指针的时候指向数组第一个元素的地址 也等价于int *ptr;ptr=array;
for(int i=0;i<7;++i){
cout<<*(ptr+i)<<" ";
}
cout<<endl;
system("pause");
return 0;
}
ok,nice !