主题:关于数组的一个问题
世界末日
[专家分:0] 发布于 2011-07-20 20:34:00
#include<iostream>
#include<conio.h>
using namespace std;
int main()
{
int a[12]={1,2,3,4,5,6,7,8,9,10,11,12},*p[4],i;
for(i=0;i<4;i++)
p[i]=&a[i*3];
cout<<p[3][2]<<endl;
getch();
}
p不是一个一维数组吗?
回复列表 (共3个回复)
沙发
argentmoon [专家分:13260] 发布于 2011-07-20 20:55:00
转个变量的解读规则给你看:
[quote]
A 声明从它的名字开始读取, 然后按照优先级顺序依次读取.
B 优先级从高到低依次是:
B. 1 声明中被括号括起来的那部分
B. 2 后缀操作符:
括号 () 表示这是一个函数, 而
方括号表示这是一个数组
B. 3 前缀操作符: 星号 * 表示 "指向 ... 的指针".
C 如果 const 和 (或) volatile 关键字的后面紧跟类型说明符 (如 int, long 等), 那么它作用 于类型说明符. 在其他情况下, const 和 (或) volatile 关键字作用于它左边紧邻的指针星号.
[/quote]
所以,int *p[4],应该是这么解读的:p是一个数组,数组里存的是指向int的指针
板凳
argentmoon [专家分:13260] 发布于 2011-07-20 20:58:00
同时,请楼主学习一下数组和内存的对应关系
3 楼
Hack_RDZ [专家分:0] 发布于 2011-07-28 17:12:00
p是一个指针数组,
p[x]存储的是内存地址,such as "00EF0001"
p[x]是string类型的,
p[x][y]其实是指p[x]这个string数第y个字符
by:Hack_RDZ
我来回复