最近书上看了一些关于指针的内容,觉得不错,特此记录
关于以下指针定义的解释
(1) float(**def)[10];
(2) double*(*gh)[10];
(3) double(*f[10])();
(4) int*((*b)[10]);
(5)Long(* fun)(int);
(6) Int(*(*F)(int,int))(int);
(1) float(**def)[10]; 声明了一个float型的float数组,def为一个二级指针,(1)中的声明可以等价为:
float d[10];//普通的数组
float *de=&d;//一个指向数组首指针地址的指针
float *def=&de;//一个指向数组首指针地址的指针的指针
(2) double*(*gh)[10]; 声明了一个double型的指针数组,*(*gh)[10]为一个指针数组,其中存储了10个double型的指针,此声明可以等价为:
double *g[10];//声明了一个指针数组,g为该指针数组的首地址,数组中存储了十个指向double型变量的指针
double *gh=&g;//声明一个指向g的地址的指针
(3) double(*f[10])(); 函数指针,声明了一个指向(返回值为double,参数为空的函数)的函数指针数组,包含十个这样的指针
(4) int*((*b)[10]); 指向指针数组的指针,可以等价为:
int *get[10];//指针数组
int *b=&get;//一个指向指针数组的首指针的指针
(5) Long(* fun)(int); 一个简单的函数指针,指针指向一个返回值为long且参数为一个int的函数
(6) Int(*(*F)(int,int))(int); 比较复杂,认真分析之后也不太复杂,F为一个指向(返回值为(一个指向(返回值为Int,参数为一个int的函数)的函数指针),参数为两个int的函数)的函数指针。好吧,很复杂。就暂且这样吧,下次见。
本文详细解析了六种复杂的C/C++指针类型定义,包括多级指针、指针数组、函数指针等,并通过等价声明帮助理解。

被折叠的 条评论
为什么被折叠?



