char *line[5]和char (*line)[5]有什么区别?

char *line[5]和char (*line)[5]有什么区别?int (*f)(int)和int*f(int)有什么区别?
最新回答
爱上┃美人鱼

2024-05-04 09:01:56

char *line[5]是
指针数组
,实质是一个数组,里面的5个元素都是指针 .[]的
优先级
比*的优先级高,line先与[]结合,形成数组line[5],有5个元素的数组,再与*结合,表示此数组是指针类型的,每个数组元素相当于一个指针变量
char (*line)[5]是
数组指针
,line与*组合形成指针,即数组首元素地址的指针。即是指向数组的指针。
int (*f)(int)是指向函数的指针,f与*结合,形成指针,指向函数
int*f(int)表示函数的返回返是指针类型。
舞尽桃花

2024-05-04 09:27:54

char *line[5] 定义一个5个char型的指针数组

char (*line)[5] 定义一个指针,指向含5个char型的数组

int (*f)(int) 指针函数带一个int型参数,返回一个int型变量

int *f(int) 函数带一个int型参数,返回一个int的指针变量
梦醒

2024-05-04 11:46:07

指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指针
数组指针:a pointer to an array,即指向数组的指针
还要注意的是他们用法的区别,下面举例说明。
int* a[4] 指针数组
表示:数组a中的元素都为int型指针
元素表示:*a[i] *(a[i])是一样的,因为[]优先级高于*
int (*a)[4] 数组指针
表示:指向数组a的指针
元素表示:(*a)[i]

第二个是:int (*f)(int) 表示的是函数指针,其f可以指向一个函数。
而int*f(int) 表示f函数的返回类型是int *