-
A:p=a;
-
B:*p=a[0];
-
C:p=&a[0];
-
D:p=&a;
- D不正确,因为&a,是指向数组的指针了,
- 链接:https://www.nowcoder.com/questionTerminal/772c1e2c77ef408d8b25e706bc2ab434?toCommentId=75662
来源:牛客网两个变量是相同类型才可以相互赋值(强制转换除外!)
假设有定义:int* p = NULL, int a[n];
A: 数组名a类型为int *,与指针变量p是相同类型,可以赋值,正确;
B:a[0]与*p都是int 型,可以赋值,正确;
C:&a[0] 的类型为int *,所以可以赋值,正确;
D: &a的类型为 int (*) [n],即指向数组的指针,&a+1直接就跳到了数组最后一个元素的后一个元素,所以无法赋值,错误。如果p定义为 int (*p) [n], 则 p = &a是正确的操作,
-
但是可以通过强转让他们变成相同的类型:
-
int *p,int a[10];
-
p=(int *)(&a)
-
然后这样就可以通过了
具有相同类型的指针类型变量p与数组a,不能进行的操作是:
最新推荐文章于 2022-03-11 00:35:44 发布