回 帖 发 新 帖 刷新版面

主题:关于数组的一个问题


#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个回复)

沙发

转个变量的解读规则给你看:

[quote]
A  声明从它的名字开始读取, 然后按照优先级顺序依次读取. 
B  优先级从高到低依次是:
  B. 1  声明中被括号括起来的那部分
  B. 2  后缀操作符:
      括号 () 表示这是一个函数, 而
      方括号表示这是一个数组
  B. 3  前缀操作符: 星号 * 表示 "指向 ... 的指针". 
C  如果 const 和 (或) volatile 关键字的后面紧跟类型说明符 (如 int, long 等), 那么它作用 于类型说明符. 在其他情况下, const 和 (或) volatile 关键字作用于它左边紧邻的指针星号. 
[/quote]

所以,int *p[4],应该是这么解读的:p是一个数组,数组里存的是指向int的指针

板凳

同时,请楼主学习一下数组和内存的对应关系

3 楼

p是一个指针数组,
p[x]存储的是内存地址,such as "00EF0001"
p[x]是string类型的,
p[x][y]其实是指p[x]这个string数第y个字符
by:Hack_RDZ

我来回复

您尚未登录,请登录后再回复。点此登录或注册