加快建设公司新版网站,定制车需要多少钱,网站数据分析怎么做,沛县网络营销是什么相信很多人和我一样#xff0c;有着这样的恐惧#xff0c;那就是这四个玩意怎么也分不清#xff0c;这都是啥啥啥啥呢#xff1f;今天我们来具体分析一下。其实要具体了解这四个概念#xff0c;只需要了解符号优先级#xff0c;并关注最后两字#xff0c;你就成功了一半… 相信很多人和我一样有着这样的恐惧那就是这四个玩意怎么也分不清这都是啥啥啥啥呢今天我们来具体分析一下。其实要具体了解这四个概念只需要了解符号优先级并关注最后两字你就成功了一半。符号优先级在一个表达式中可能包含多个不同运算符连接起来的、具有不同数据类型的数据对象由于表达式有多种运算不同的结合顺序可能得出不同结果甚至出现运算错误。所以表达式必须按一定的顺序进行结合才能保证运算的合理性和结果的正确性、唯一性。所以请牢牢记住下面三个符号的优先级判断这对今天理解这四个概念十分重要(内) [ ] * 指针数组指针数组一个数组数组的元素是一个指针常用形式类型 *变量[长度]int *p1[10]
/*
由于[]的优先级比*更高
p1表示一个10个元素的数组
int* 表示元素是一个指向int的指针
即p1[0]p1[1]...各自装着一个int指针
*/
指针数组比较容易理解就是一个数组里面装的是指针 数组指针数组指针一个指针而指针的指向是一个数组常用形式类型 (*变量)[长度]int (*p2)[10]
/*
由于()的优先级高所以p2表示是一个指针
指针指向的地址长度为int[10]的大小
即p2为一个指向int[10]数组的指针
*/
有时候我们也把数组指针成为“行指针”遇到多维数组的时候经常使用。int a[3][4] {1,2,3,4,5,6,7,8,9,10,11,12};
int (*p)[4];
p (int(*)[4])a;
for(int i0;i3;i ) {for(int j0;j4;j ) {printf(%d\n, *(*(p i) j)); }
}指针函数指针函数一个函数函数的返回值是一个指针常用形式返回类型 * 函数名(形参类型 形参名)int * max(int *a,int *b) {return (*a *b) ? a : b;
}
指针函数也比较容易理解就是返回的是一个指针的函数。 函数指针函数指针一个指针指针指向的是一个函数常用形式返回类型 (*变量)(形参类型) int (*func) (float, float);
/*
*func表明func是一个指针指向一个函数
前面int表示该返回值
后面的两个float表明该函数的两个形参类型
*/
举个例子int sum(int a, int b) { return a b;}
int main() { //声明同时初始化函数指针 int (*ptr)(int, int) sum; //使用*ptr即可替代sum函数 printf(%d\n, (*ptr)(10, 20)); return 0;}
到这里是不是觉得这一切so easy那么难度开始提升const char *(*f_ptr[10])(int a[], double * b)请问 f_ptr 是啥别慌看上去这行代码很长但是我们一起来分析一下f_ptr 后面跟着 [10] 由于 [] 的优先级更高所以 f_ptr 是一个长度为10的数组我们把 f_ptr[10] 看作为 X ,那么数组里面装的啥呢const char *(*X)(int a[], double * b)观察 X 之前的 * 所以数组里装的是指针我们把 (*X) 看作为 Y ,那么这个指针指向的又是什么呢const char * Y(int a[], double * b)仔细观察 Y 前后就可以发现这是一个函数指针指针指向的函数返回一个 const char * 的指针而函数的形参 (int [], double *) 。综上 f_ptr 是一个长度为10的数组数组元素为返回 const char * 参数 (int [], double *) 的函数指针。声明本文于网络整理版权归原作者所有如来源信息有误或侵犯权益请联系我们删除或授权事宜。