首页 > 试题广场 >

对下面变量声明描述正确的有()int *p[n];int&n

[单选题]
对下面变量声明描述正确的有()
int *p[n];
int (*)p[n];
int *p();
int (*)p();
  • int *p[n];—–指针数组,每个元素均为指向整型数据的指针
  • int (*)p[n];—p为指向一维数组的指针,这个一维数组有n个整型数据
  • int *p();——函数带回指针,指针指向返回的值
  • int (*)p();—-p为指向函数的指针
首先看优先级:[]和()的优先级比星号(星号的名字叫做“指针运算符”)要高,并且这两个括号的运算符的结合顺序,是从左到右的
第一个int *p[n]   相当于int*(p[n])首先是一个数组 数组元素的类型是int* 
第二个int (*)p[n]   相当于int ((*p) [n])那么,int ((*p) [n])也是一个n维数组,但是这个数组的首地址是*p,也就是说,p指向的内容,是一个数组的首地址。所以,p就是指向一个数组的指针,这个数组中的元素都是int。实际上,p相当于是一个二维指针。
三四同理。
第三个是函数声明;
第四个是函数指针;
发表于 2019-08-21 16:19:01 回复(2)
1、函数指针和指针函数的区别 函数指针:本质是指针,指向函数,因此可通过指针来访问函数,其常见形式是int (*)fun() 指针函数:说到底就是函数,只不过不同于一般常见函数,它的返回值为一个指向特定类型的指针,常见形式如int * fun() 注:以上int也可以换成其他数据类型甚至抽象类型,如类类型等。 2、 同理:指针数组即为数组,只不过数组元素为指向特定数据类型的指针,数组指针即为指针,其指向的类型为各数组,因此可采用数组指针来访问二维数组。
编辑于 2019-09-18 09:42:32 回复(0)