首页 > 试题广场 >

对于以下变量定义,正确的赋值是( ) ? int *p

[单选题]
对于以下变量定义,正确的赋值是()


int *p[3], a[3];


  • p=a
  • *p=a [0]
  • p=&a [0]
  • p[0]=&a[0]
int *p[3]  是一个指针数组,p是数组名,数组元素类型是 int *。即表示一个一维数组中存放3个指针变量,分别是p[0]、p[1]、p[2]
int a[3] 是一个数组,a是数组名,数组元素类型是 int 。即表示一个一维数组中存放3个int类型的元素,分别是a[0]、a[1]、a[2]

你不能给一个数组名(p)赋值,所以A和C全跪。
*p等价于*(p+0)等价于p[0],而p[0]中存放的是指针变量(int *),a[0]是int型。B也不对。

发表于 2018-07-27 18:10:12 回复(1)
A选项:虽然两个数组是不同的,但关键点是数组的地址不可修改,所以错误
B选项:两边的元素类型不一样,左边是指针,右边是int,当然不可以。
 B选项题意应该是想把指针数组里的第一个指针(数组名代表首元素名)指向a[0],改为*p=&a[0]即可实现。
C选项:把a的首元素地址赋给了p数组,同样犯了A的错误。
D选项:指针数组的第一个指针指向int数组的第一个值 
发表于 2019-08-14 11:15:47 回复(0)
p=a编译报错的,答应应该是D;
p相当于是一个二维指针,a相当于一维指针
发表于 2018-05-17 10:12:26 回复(2)
数组名不能当左值
发表于 2022-01-13 00:06:13 回复(0)
数组名是指针常量,而赋值号左边必须是变量
发表于 2022-07-07 15:42:25 回复(0)
    int *p[3], a[3];        
  • p=a
  • *p=a [0]
  • p=&a [0]
  • p[0]=&a[0]
首先明确int* p[3];p是数组,而且是一个整型指针数组,可以存放3个int*类型的整型指针的数组。
1、p=a;p是数组名,数组名是指针常量,不能改变,所以错误。
2、*p=a[0];p是数组名,也就是首元素的地址,首元素的地址解引用,也就是第一个元素即p[0]整型指针int*,而a[0]是数组的整型,类型不兼容,所以错误。
3、p=&a[0];p是数组名,数组名是指针常量,不能改变,所以错误。
4、p[0]=&a[0];p[0]指针数组的第一个元素,也就是一个整型指针,可以保存&a[0],因为也是一个整型的地址。所以正确。

发表于 2023-04-30 23:41:44 回复(0)
指针数组:int *p[3] 数组中元素为指针 数组指针:int(*p)[3] 指向数组的指针 不能对数组名赋值
编辑于 2020-10-10 22:04:37 回复(0)
题目错误,应修改为:......错误的赋值是()。
ABC均正确。D错误
理由:
A:p = a         解析:直接使用p,表示一个地址,而直接使用数组名a进行赋值,表示数组a的首地址,因此p=a即把数组首地址给了p。地址=地址  故正确
B:*p = a[0]     解析:*p表示内容,而a[0]表示数组a第一个元素的值,其为内容,并非地址。内容= 内容  故正确
C: p = &a[0]     解析:p需要接受一个地址,而&a[0]表示数组首元素的地址,其相当于答案A  :p=a  地址 = 地址  故正确
D:p[0] = &a[0]  解析:p[0]为指针数组第一个元素的内容,其类型为int  而&a[0]为一个地址,其类型为int * 。由于 内容 = 地址 是错误的,故答案D错误。
ABC编译均通过
答案D的编译显示:无法从“int * ”转换为“int”
编辑于 2019-03-25 09:59:20 回复(3)
int  *p[3],表示一个一维数组中存放3个指针变量,分别是p[0],p[1],p[2]
int a[3],表示一个一维数组中存放3个int类型的元素,分别是a[0],a[1],a[2];
p[0]=&a[0];
发表于 2021-06-06 15:26:05 回复(0)
int *p[ ]和int (*p)[ ]的区别
发表于 2021-03-04 22:31:31 回复(0)
#include <iostream>
using namespace std;
int main()
{
	int *p,(*p1)[3], *p2[3],a[3];
	p = a;
	p1 = &a; // 传数组地址给数组指针
	p2[0] = a;// 传地址给指针数组
	return 0;
}

发表于 2020-12-08 19:31:21 回复(0)

<p>知识点:</p><p>1、指针数组的定义</p><p>2、数组名是指向数组中第一个元素的常量指针,不可改变。</p>


编辑于 2020-11-02 17:20:47 回复(0)

AC数组名不能当左值

发表于 2019-06-13 23:29:45 回复(2)

p是一个存放3个整型指针的数组,p[0]是取数组中的第一个指针,&a[0]是取址操作,两者都得到一个地址,不知道我这样理解对不?

发表于 2018-07-09 21:06:05 回复(1)