首页 > 试题广场 >

具有相同类型的指针类型变量p与一维数组a,不能进行的操作是(

[单选题]
具有相同类型的指针类型变量p与一维数组a,不能进行的操作是( )。
  • p=a;
  • *p=a[0];
  • p=&a[0];
  • p=&a;
推荐
D
两个变量是相同类型才可以相互赋值(强制转换除外!)
假设有定义:
int* p = NULL, int a[n]; 
A: 数组名a类型为int *,与指针变量p是相同类型,可以进行赋值操作;
B:a[0]与*p都是int 型可以进行赋值操作
C:&a[0] 的类型为int *与指针变量p是相同类型可以进行赋值操作
D: &a的类型为 int (*) [n],即指向数组的指针,与指针变量p不是相同类型,因此无法进行赋值操作。

如果p定义为 int (*p) [n], 则 p = &a是正确的操作。
可以通过强转让他们变成相同的类型:
int *p,int a[10];
p=(int *)(&a);
这样即可编译通过。
综上,本题选D。
编辑于 2020-01-13 14:49:10 回复(0)
D。考察的是对指针类型的理解以及数组和指针的关系。
根据题目中的指针类型p和数组a类型相同,假设都用int类型代指。
  • A选项:数组名相当于数组首元素的地址,类型int*。p指针变量类型也为int*,所以可以赋值,A正确
  • B选项:数组索引为0的元素a[0]类型为int类型,*p为指针变量存放地址中的值同为int类型,可以赋值,B正确
  • C选项:&a[0]首元素取地址,类型为int*,已知p为指针变量类型int*,类似于A选项的原理,C正确
  • D选项:对数组名取地址,&a是指向整个数组的指针int*[n],而p仍然为int类型,类型不匹配,D错误
发表于 2020-01-11 09:35:42 回复(1)
两个变量是相同类型才可以相互赋值(强制转换除外!) 
A: 数组名a类型为int *,与指针变量p是相同类型,可以进行赋值操作;
B:a[0]与*p都是int 型可以进行赋值操作
C:&a[0] 的类型为int *与指针变量p是相同类型可以进行赋值操作
D: &a的类型为 int (*) [n],即指向数组的指针,与指针变量p不是相同类型,因此无法进行赋值操作。
发表于 2020-03-09 10:33:00 回复(0)
总之
发表于 2022-02-13 21:42:05 回复(0)