首页 > 试题广场 >

若有定义typedef int * T; T a[ 10 ]

[单选题]
若有定义
typedef int * T; 
T a[10]; 
则a的定义与下面哪个语句等价?
  • int ( *a ) [10] ;
  • int * a[10] ;
  • int * a ;
  • int a[10];
推荐
本题考查typedef的使用方法,typedef对已存在的类型使用一个新的名字,其中本题中int * 用T来代替,所以定义T a[ 10 ];就相当于是int * a[10];选项B正确。
编辑于 2015-02-03 17:22:42 回复(2)
int *a[10] :数组指针。数组a里存放的是10个int型指针 int (*a)[10] :a是指针,指向一个数组。此数组有10个int型元素 int *a[10] 先找到声明符a,然后向右看,有[]说明a是个数组,再向左看,是int *,说明数组中的每个元素是int *。所以这是一个存放int指针的数组。 int(*a)[10] 先找到声明符a,被括号括着,先看括号内的(优先级高),然后向右看,没有,向左看,是*,说明s是个指针,什么指针?在看括号外面的,先向右看,有[] 是个数组,说明a是个志向数组的指针,再向左看,是int,说明数组的每个元素是int。所以,这是一个指向存放int的数组的指针。 例 int *p[10]; int (*q)[10]; printf( "*p[10]: %d\n ", sizeof(p)); printf( "(*q)[10]: %d\n ", sizeof(q)); 结果是: *p[10]: 40 //说明p是一个数组名 (*q)[10]: 4 //说明q是一个指针
来源: http://blog.chinaunix.net/uid-28058348-id-3362026.html
发表于 2015-09-19 21:28:38 回复(4)
聪明反被聪明误
发表于 2016-08-27 22:54:00 回复(0)
typedef int* T;相当于生成了一个新的类型T(int*),要说明T a[10];我们先明白数组元素的定义过程,例如 int a[10],是声明10个int类型的元素的数据,每生成一个元素都要调用in的构造函数 即10个元素需要调用10次构造函数来生成int类型的元素。同理:T a[10],需要调用10
次T 的构造函数类生成T 类型的元素,即每个元素的类型都是T 即int* 也就是数组中每个元素都是int类型的指针,则可得这是个指针数组, 选B
发表于 2018-07-30 12:06:41 回复(0)
typedef 用途之一:定义一种类型的别名 可以用作同时声明指针型的多个对象 typedef int* T; T a[10]; 相当于将a[10]全部都声明为指针 所以是等价于 int* a[10]
发表于 2017-07-27 01:27:37 回复(0)
typedef 原始数据类型  新数据类型
所以用T就是int *
T a[10]表示一个长度为10的数组,且数组元素均为整型的指针,它等价与int *a[10],int (*a)[10]为指向大小为10整型数组的指针,元素均为整型数据。
发表于 2019-02-28 19:25:12 回复(0)
typedef,直接替换
发表于 2020-11-05 16:48:10 回复(0)
typedef int * T; T a[10]; 我错了,答案应该是B。定义了一个有10个元素的数组,而元素的类型是指向整形的指针int*; 而int (*p)[10]定义了一个指针,这个指针指向一个有10个元素的数组。 指针(的)数组 数组(的)指针 经典的好问题
编辑于 2020-04-25 20:32:26 回复(0)
答案应该是A吧,
A代表的a是一个int指针型的数组
B代表的是 a是一个指向数组的指针
发表于 2015-05-11 00:11:15 回复(0)
因为没有加括号,所以a先与数组结合,再是指针,所以是数组指针.(个人看法)
发表于 2022-10-19 19:05:18 回复(0)
本题考查typedef的使用方法,typedef对已存在的类型使用一个新的名字,其中本题中int * 用T来代替,所以定义T a[ 10 ];就相当于是int * a[10]
typedef用于给类型定义一个新的别名
发表于 2022-06-10 17:51:03 回复(0)
typedef为C语言的关键字,作用是 指定别名,直接替代别名就OK
发表于 2021-06-27 21:24:30 回复(0)
int*表示变量类型为整型指针,考虑结合优先级,然后就答案b符合
发表于 2021-04-15 15:31:12 回复(0)
a是一个整形指针数组
发表于 2021-03-04 10:47:49 回复(0)
a 指针数组,数组里有10个指向int类型的指针;b 数组指针,指向数组的指针,只有一个指针,但指向有10个元素的int型数组
发表于 2021-02-21 18:58:07 回复(0)
发表于 2020-06-18 16:42:31 回复(0)
我觉得把答案是A 
typedef和define又不一样 不是直接替换的
定义了 int * 应该是一个类型,所以应该是数组的指针吧
发表于 2020-06-01 14:25:23 回复(0)
我也觉得答案是A,重新定义的类型名不应该代表整型指针吗?typedefine不是代表一对一替换,那不就是个指针数组吗
发表于 2018-07-28 23:11:55 回复(0)
这题经典
发表于 2015-08-04 10:25:51 回复(0)