函数指针
函数指针的定义
函数返回值(*pf) 函数形参列表;此时pf未初始化;
用与其类型匹配的函数名对其赋值即可
数组指针
二维数组数组名是一个二级指针,二级指针+1指向下一行;
形如int (*p)[10],int * a[10], p,a也是个二级指针;
二级指针解一次指针,得到一级指针,此一级指针+1指向下一个元素;
二级指针加[]等同于解一次指针
同理,若有
int a[]={1,2,3,4}
则&a为二级指针
#include<iostream>
using namespace std;
int main()
{
int v[2][10]={{1,2,3,4,5,6,7,8,9,10},{11,12,13,14,15,16,17,18,19,20}};
int (*a)[10]=v;
cout<<"&v[0][0]: "<<&v[0][0]<<endl;
cout<<"&v[0][1]: "<<&v[0][1]<<endl;
cout<<"&v[1][0]: "<<&v[1][0]<<endl;
cout<<"v是二级指针: "<<v<<" *v:"<<*v<<" **v:"<<**v<<endl;
cout<<"a是二级指针: "<<a<<" *a:"<<*a<<" **a:"<<**a<<endl;
cout<<"*v是一级指针 "<<*v<<endl;
cout<<"*a是一级指针 "<<*a<<endl;
cout<<"**a指针已解完,表示元素: "<<**a<<endl;
cout<<"v+1:二级指针+1,指向下一行的首地址: "<<v+1<<" *(v+1):"<<*(v+1)<<" **(v+1)="<<**(v+1)<<endl;
cout<<"a+1:二级指针+1,指向下一行的首地址: "<<a+1<<" *(a+1):"<<*(a+1)<<" **(a+1)="<<**(a+1)<<endl;
cout<<"*v+1:一级指针+1,指向下一个元素的首地址: "<<*v+1<<" *(*v+1)="<<*(*v+1)<<endl;
cout<<"*a+1:一级指针+1,指向下一个元素的首地址: "<<*a+1<<" *(*a+1)="<<*(*a+1)<<endl;
cout<<**a+1<<endl;
}
image.png
image.png
网友评论