首页 > 试题广场 >

下列定义语句中,错误的是

[单选题]
下列定义语句中,错误的是
  • int px*;
  • char *acp[10];
  • char (*pac)[10];
  • int (*p)();
推荐

指针数组 数组指针 指针函数 函数指针

int   *p[4];         //指针数组。  是个有4个元素的数组, 每个元素的是指向整型的指针 。(数组的每个元素都是指针)
int   (*p)[4];       //数组指针。 它是一个指针,指向有4个整型元素的数组。                 (一个指针指向有4个整型元素的数组)
int *func(void);     //指针函数。 无参函数, 返回整型指针。              (函数的返回值为int*)
int (*func)(void);   //表示函数指针,可以指向无参, 且返回值为整型指针的函数。       (函数的返回值为int)

编辑于 2015-01-04 14:31:23 回复(2)
发表于 2015-07-06 11:32:58 回复(0)
A

发表于 2014-12-16 10:38:13 回复(0)
一个类型里会出现很多运算符,他们也像普通的表达式一样,有优先级,其优先级和运算优先级一样:从变量名处起,根据运算符优先级结合,一步一步分析:
int p; //这是一个普通的整型变量  
int *p; //首先从P 处开始,先与*结合,所以说明P 是一个指针,然后再与int 结合,说明指针所指向的内容的类型为int 型.所以P是一个返回整型数据的指针  
int p[3]; //首先从P 处开始,先与[]结合,说明P 是一个数组,然后与int 结合,说明数组里的元素是整型的,所以P 是一个由整型数据组成的数组  
int *p[3]; //首先从P 处开始,先与[]结合,因为其优先级比*高,所以P 是一个数组,然后再与*结合,说明数组里的元素是指针类型,然后再与int 结合,说明指针所指向的内容的类型是整型的,所以P 是一个由返回整型数据的指针所组成的数组  
int (*p)[3]; //首先从P 处开始,先与*结合,说明P 是一个指针然后再与[]结合(与"()"这步可以忽略,只是为了改变优先级),说明指针所指向的内容是一个数组,然后再与int 结合,说明数组里的元素是整型的.所以P 是一个指向由整型数据组成的数组的指针  
int **p; //首先从P 开始,先与*结合,说是P 是一个指针,然后再与*结合,说明指针所指向的元素是指针,然后再与int 结合,说明该指针所指向的元素是整型数据.由于二级指针以及更高级的指针极少用在复杂的类型中,所以后面更复杂的类型我们就不考虑多级指针了,最多只考虑一级指针.  
int p(int); //从P 处起,先与()结合,说明P 是一个函数,然后进入()里分析,说明该函数有一个整型变量的参数,然后再与外面的int 结合,说明函数的返回值是一个整型数据  
Int (*p)(int); //从P 处开始,先与指针结合,说明P 是一个指针,然后与()结合,说明指针指向的是一个函数,然后再与()里的int 结合,说明函数有一个int 型的参数,再与最外层的int 结合,说明函数的返回类型是整型,所以P 是一个指向有一个整型参数且返回类型为整型的函数的指针 
发表于 2019-02-21 15:29:43 回复(3)
A
【解析】
B声明了一个数组,该数组含有10个字符指针;
C声明了一个指针,指向一个长度为10的字符数组
D声明了一个函数指针,该函数的返回值是int类型
发表于 2015-01-04 14:20:25 回复(0)
答题的时候BD明明是全角的*的。。。。
发表于 2015-03-24 13:57:54 回复(3)
int px*;//中国人有看倒字的习惯,这个选不出来,还没治。。。
char*acp[10];//虽然是对的,但是我感觉他少了个空格。。。指针数组
char(*pac)[10];//数组的指针
int(*p)();//函数指针
发表于 2016-11-14 22:12:43 回复(0)
函数指针
发表于 2021-03-21 10:47:06 回复(0)
D选项是一个函数指针,指针指向一个函数。
发表于 2020-08-09 15:10:26 回复(0)

这是个不定项,我丢,刻意多选了一个

发表于 2019-10-25 20:52:28 回复(0)
C选项
int b[4];
for (int i = 0; i < 4; i++) {
b[i] = i;
}
int(*p)[4] = &b;
cout << (*p)[0] << endl;
正确。

p并不能指向一个二维数组,像这样
int a[2][4];int (*p)[4]=a;
会报错:
"int **" 类型的值不能用于初始化 "int (*)[4]" 类型的实体
C2440 “初始化”: 无法从“int **”转换为“int (*)[4]” 
编辑于 2019-03-02 09:44:43 回复(0)
指针数组 数组指针 指针函数 函数指针 int   *p[4];         //指针数组。  是个有4个元素的数组, 每个元素的是指向整型的指针 。(数组的每个元素都是指针) int   (*p)[4];       //数组指针。 它是一个指针,指向有4个整型元素的数组。                 (一个指针指向有4个整型元素的数组) int *func(void);     //指针函数。 无参函数, 返回整型指针。              (函数的返回值为int*) int (*func)(void);   //表示函数指针,可以指向无参, 且返回值为整型指针的函数。       (函数的返回值为int)
发表于 2018-05-12 13:59:11 回复(0)

指针数组 数组指针 指针函数 函数指针

int   *p[4];         //指针数组。  是个有4个元素的数组, 每个元素的是指向整型的指针 。(数组的每个元素都是指针) 
int   (*p)[4];       //数组指针。 它是一个指针,指向有4个整型元素的数组。                 (一个指针指向有4个整型元素的数组) 
int *func(void);     //指针函数。 无参函数, 返回整型指针。              (函数的返回值为int*) 
int (*func)(void);   //表示函数指针,可以指向无参, 且返回值为整型指针的函数。       (函数的返回值为int)

发表于 2017-07-05 13:37:10 回复(0)
B不需要空格吗?
发表于 2016-03-31 21:55:55 回复(0)
我看见的B选项是这样的
char*acp[10];
真的没错?Are you sure?
发表于 2015-09-02 20:16:09 回复(2)
int   (*p)[4];       //数组指针。 它是一个指针,指向有4个整型元素的数组。                 (一个指针指向有4个整型元素的数组) 
发表于 2015-08-29 14:07:57 回复(0)
A无此用法
B指针数组
C数组指针
D函数指针

发表于 2015-08-27 09:45:29 回复(0)
A:不可能正确,没有这种形式
B:表示拥有十个元素,每个元素都是指针
C:二维数组,每列十个元素
D:p是指向函数的指针变量,该函数的返回值为整型
int   *p[4];         //指针数组。  是个有4个元素的数组, 每个元素的是指向整型的指针  。(数组的每个元素都是指针) 
int   (*p)[4];       //数组指针。 它是一个指针,指向有4个整型元素的数组。                  (一个指针指向有4个整型元素的数组) 
int *func(void);     //指针函数。 无参函数, 返回整型指针。               (函数的返回值为int*) 
int (*func)(void);   //表示函数指针,可以指向无参, 且返回值为整型指针的函数。        (函数的返回值为int)
发表于 2015-08-23 09:51:43 回复(0)