请问C语言里,怎么把整型指针数组指向结构的整型变量?

比如:
int *p[3];

struct my
{
int a;
int b;
int c;
};

my number={0};
p[0]=&number.a;

为什么这样编译不通过呢?请问这样是合法的吗?

合法。用vc2010编译没问题。

是C还是C++,这段代码对于C++来说才是合法的。
参考编译器输出:
C++ http://codepad.org/OsR6yya3
C http://codepad.org/rUCSm2ZZ

my number={0};//改为struct my number={0};

结构体变量的定义出问题了,根据谭浩强的C程序设计第三版,结构体的定义三种方法,第一种是楼主用的方法,但用错了,应为:

先声明结构体类型再定义变量名

      struct student
      {
          int num;

          char name[20];

          char sex;
          int age;

          float score;

          char addr[30];
       };

  **  struct  student **      student1, student2;
        所以楼上说对了!

又看了一下,才发觉楼主的问题的实质应该在这里:
程序已定义了p是一个指向struct student类型数据的指针变量,它用来指向一个struct student类型的数据,不应用来指向stu数组元素中的某一成员。例如:"p=stu[1].name”"是不对的
如果要将某一成员的地址赋给p,可以用强制类型转换,先将成员的地址转换成p的类型。
例如:p=(struct student *)stu[0].name;
此时p的值是stu[0]元素的name成员的起始地址。可以用"printf("%s",p);"输出stu[0]中成员name的值。但是p仍然保持原来的类型。如果执行“printf("%s",p+1);”则会输出stu[1]中name的值。执行p+1时,p的值增加了结构体struct student的长度。

所以楼主这里的问题是 int *p[3]的类型和numeber的类型不一致。