首页 > 试题广场 >

int (*p)[5]; 定义的是

[单选题]
int (*p)[5]; 定义的是
  • p是一个指针数组,该数组中的每一个元素都是一个整型指针
  • p是一个数组的指针,该指针指向一个长度为5的整型数组
  • p是一个函数指针,该指针指向一个参数为5的函数
  • p是一个指针函数,该函数的返回值为一个整型指针
推荐
选B。考察的是数组指针指针数组、函数指针与指针函数的区别。
根据题意及下面的分析:
    int (*p)[5]; 为数组的指针,该指针指向一个长度为5的整型数组

数组指针和指针数组的区别

数组指针定义 int (*p)[n];  
()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n

指针数组定义 int *p[n];
[]优先级高,先与p结合成为一个数组,再由int*说明这是一个整型指针数组,它有n个指针类型的数组元素。

函数指针和指针函数的区别

函数指针定义指向函数的指针变量,即本质是一个指针变量
    int (*f) (int x);   /* 声明一个函数指针 */ 
    f=func;            /* 将func函数的首地址赋给指针f */

指针函数定义
指带指针的函数,即本质是一个函数,函数返回类型是某一类型的指针。
    类型标识符    *函数名(参数表)       
        int              *f(x,y);

编辑于 2019-08-05 14:24:20 回复(0)

选B

p是一个数组的指针,该指针指向一个长度为5的整型数组。

考查了数组指针和指针数组的区别。

数组指针 :int(*p)[5] :括号强调优先级,所以p是一个指针,而int 和 [5]表示该指针指向一个长度为5的整型数组。

指针数组:int*p[5] :因为[]优先级更高,所以表达式表示这是一个数组,数组里存了五个整型指针。

函数指针:int(*p)(int x) :同理,()优先级高,所以这是一个指针,指向的是一个参数为整型返回值为整型的函数。

指针函数:int *p(int x) :首先p是一个函数,p的返回值是一个指针,被称为指针函数。

因此选B!

编辑于 2019-08-03 09:21:10 回复(0)
B
指针阅读技巧可参考如下:
右左法则
1、从最里层的圆括号中未定义的标示符看起
2、首先往右看,再往左看
3、当遇到圆括号或者方括号时可以确定部分类型。并调转方向
4、重复2,3步骤,直到阅读结束

如:


这3个case看懂基本就可以披荆斩棘了!!加油!
发表于 2019-08-04 16:29:36 回复(2)
B
这句话的意思是:定义一个指向整形数组 int [5]的指针。
分2部分来看。
int a[5];   //a是一个数组
a=*p    //p是一个指向a的指针

编辑于 2019-08-03 14:24:51 回复(0)
感觉b是对的qaq,应为*是指针的定义,然后p[5]是指一个长度为p的数组,所以合起来就是一个指向长度为5的数组的指针

故选b
发表于 2019-08-02 15:13:10 回复(0)

int *p[5]为指针数组,这里()优先级高,p是指向数组的指针

发表于 2020-03-02 19:17:01 回复(0)