首页 > 试题广场 >

如果有定义语句int*ptr[4],typeid(ptr).

[单选题]

如果有定义语句 int *ptr[4],typeid(ptr).name() 结果为 "A4_Pi",

请问对 int *(ptr[4]) , typeid(ptr).name() 输出是

  • PPi
  • A4_Pi
  • PA4_i
  • A4_i
int *ptr[4];指数组ptr中有4个元素,每个元素都是int *类型的;
*和[]对ptr的结合性:先和[]结合,而*和int结合用来修饰ptr,所以加个括号也和之前的一样。

关于typeid():
在c++中,typeid用于返回指针或引用所指对象的实际类型,它是一个操作符
可以在运行时获知变量类型名称,可以使用 typeid(变量).name()获取。

发表于 2020-08-21 16:35:04 回复(0)
int * ptr[4]  是指针数组[]的优先级高于* 所以ptr先与[]结合形成一个数组定义,数组名为ptr ,然后剩余部分int *代表的就是数组中存放的类型,也就是:一个ptr的数组包含了4个指向int类型的指针。
int (* ptr) [4] 数组指针。 ()的优先级高于[] ,括号内*与tr结合形成指针定义,指针变量名为ptr , 剩余部分构成该指针的类型:int [4] 一个匿名数组,也就是:一个指针ptr变量指向了一个包含4个Int的数组。
根据题目:int *ptr[4] = int * (ptr[4])  所以答案:A4_Pi
判断方法:先找出与变量名结合的修饰词,确定变量定义,剩余的就是对该定义的类型描述

发表于 2022-06-12 11:19:39 回复(0)
int *ptr[4]与int *(ptr[4])等价。
发表于 2017-08-31 19:44:24 回复(0)
两者等价,括号会比*的优先级高
发表于 2021-08-24 11:01:16 回复(0)
在c++中,typeid用于返回指针或引用所指对象的实际类型,它是一个操作符
可以在运行时获知变量类型名称,可以使用 typeid(变量).name()获取。
发表于 2022-03-09 14:42:01 回复(0)
相信自己
发表于 2021-04-10 23:27:35 回复(0)
这种题目有啥意义,工作从来不会用到的
发表于 2025-11-29 12:06:10 回复(0)
运算符优先级 []>()>*
发表于 2025-03-06 17:55:35 回复(0)
可以了 将前面的*理解为像int一样的修饰符,都是修饰后面的为指针类型
发表于 2024-09-08 09:59:52 回复(0)
[]和()的优先级都比*要高,所以两个都是指针数组
发表于 2021-06-04 00:39:39 回复(0)