关于c++中对int *pa[5]的理解

有一道题是这么说的:对于int *pa[5]的描述,正确的是(A)
A)pa是一个指向数组的指针,所指向的数组是5个int型元素

首先这是一个指针数组,那么照这样说指针数组所保存的指针是数组指针,这样认为对吗?那数组的每一个对应元素都能指向整个数组了吗?还是我对这道题答案的理解有问题?

我是个刚学C++的新手,麻烦讲的通俗些详细些,谢谢了

额,答案好像是错误的。

这个其实要看变量优先和谁结合。举个例子:

例如 int * pa[5] 和int (*pa)[5] 

    int * pa[5] 默认[]要先结合,所以先可以得到pa[5],即pa是一个大小为5的数组

然后表达式剩下int * , 即表示数组中存储的是int型的指针。

综合就是pa是个指针数组,数组大小为5

    而对于int (*pa)[5],括号优先级别最高 得到(*pa)  ,表示pa是一个指针

然后是外部的数组符号,表示pa指向的是一个数组,数组的大小是5

最后是那个int ,表示数组中存储的是int型的数据。

综合就是pa是个数组指针,指向的数组为5个int型的元素,这个才会选A选项的那个答案。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-25
答案表述的并不好,PA的确是一个指针数组,但是并不代表它所指向的一定是一个数组,它的含义是一个数组里5个元素恰好都是指针,可以分别指向5个整型变量,所以我觉得A选项的答案容易产生误解。
建议你阅读指针数组与数组指针的区别,或者你可以继续提问我。本回答被提问者采纳
第2个回答  2013-03-13
对于 int a;你是知道 a是int型的; 对于int* a; 你是知道a是指向int型的point; 对于int a【】;你是知道他是一个数组,a point向数组的第一个元素的;那么对于int *pa[5]的理解就是 a【5】指向int型的,但p【5】又是数组,所以他是个point 数组,并且有5个元素!!
我怀疑你的答案是错了,还是你说的是int (*pa)[5]的理解,对于他就是你答案的理解!!!!
第3个回答  2013-03-13
眼睛的湿润 的回答我感觉是正确的

关于c++中对int *pa[5]的理解
综合就是pa是个指针数组,数组大小为5 而对于int (*pa)[5],括号优先级别最高 得到(*pa) ,表示pa是一个指针 然后是外部的数组符号,表示pa指向的是一个数组,数组的大小是5 最后是那个int ,表示数组中存储的是int型的数据。综合就是pa是个数组指针,指向的数组为5个int型的元素,这个才会选...

c++的指针问题 .对于“ int *pa[5];”的描述,正确的是___。
正确选项是D,pa是变量名称,[]优先级高于*,所以pa是数组,数组的元素是int

设有语句int *pa[5]; 则对其描述正确的是 求答案
A解析:在C语言和C++语言中,数组元素全为指针的数组称为指针数组。一维指针数组的定义形式为:“类型名 *数组标识符[数组长度]”。例如,一个一维指针数组的定义:int *ptr_array[10]。指针数组的含义指针数组中的每一个元素均为指针,即有诸形如“*ptr_array[i]”的指针 ...

c++中有定义语句"char *pa[5];" 则sizeof(pa)的值为多少
pa[5] 是一个指针数组 一个指针 要分配一个int存储他的地址 所以 sizeof(pa[0])=4 那个5个,就是 5(ˇˍˇ) 5x4=20

关于数组首地址赋值给指针和数组指针的问题
int *p定义了一个指向int型的指针p。而a本身已经是指向int型的指针了,对a做取值操作,返回的结果是int **类型的,造成类型不匹配,所以不能这样写:int *p = &a;而int (*pa)[5]定义了一个指向5个元素的int数组的指针,而a只是数组的首地址,&a才是数组的指针,同样也是因为类型不匹配。

C++ delete指针数组的问题
那是系统底层的应用,不用过多关心。一般情况,释放只是告诉操作系统,“我”不再使用该内存了,可以提供给“别人”使用了!而在没有人使用时,你当然可以再次读到相应的数据。int *p=new int ; delete p ; 非数组的释放 int *pa=new int[5] ; delete [] pa ; 数组的释放 ...

急!!!C++编程题:输入10个整数,储存到一个一维整型数组中,编一个函数...
void main(){ int *p,i,m,xx[10];printf("请输入10个整数,用空格隔开:");for(p=xx;p<xx+10;p++){ scanf("%d",p);\/*这个是输入过程,使用指针变量P*\/ } for(i=0;i<10;i++){ \/*以下是排序过程过程,同样使用指针变量P*\/ for(p=xx;p<xx+10;p++){ if(*p>*(p+1)){ m...

行参实参搞不清楚了
C\/C++中参数传递有两种方式,传值或传地址(传引用),通常我们要在被调用函数中改变一个变量的值就需要传地址调用方式,例如:void swap_by_value(int a, int b){ int temp;temp = a;a = b;b = temp;} void swap_by_ptr(int* pa, int* pb){ int temp;temp = *pa;pa = *pb;pb...

我是个c++初学者,感觉学到指针这比较难,尤其是2级指针,哪为大虾能给...
(5)int*(*ptr)[4];\/\/指针所指向的的类型是int*()[4] 在指针的算术运算中,指针所指向的类型有很大的作用。 指针的类型(即指针本身的类型)和指针所指向的类型是两个概念。当你对C越来越熟悉时,你会发现,把与指针搅和在一起的"类型"这个概念分成"指针的类型"和"指针所指向的类型"两个概念,是精通指针的...

C++问题, 4. 下列程序执行完后,x的值是多少?
解:pa指向的是pa[]数组的第一个元素 11.C++语言的跳转语句中,对于break和continue说法正确的是: C A)break语句只应用与循环体中 B)continue语句只应用与循环体中 C)break是无条件跳转语句,continue不是 D)break和continue的跳转范围不够明确,容易产生问题 12. 若有说明int i,j,k;则表达式i=...

相似回答