当前位置: 代码迷 >> C语言 >> 不定长指针数组问题
  详细解决方案

不定长指针数组问题

热度:151   发布时间:2008-03-06 17:28:56.0
不定长指针数组问题
struct aa
{
    int a;    
};

struct bb
{
    int b;
    struct aa (*c)[];    
};
我怎么做,才能判断bb结构体中的c是不是 NULL,并且能个c赋值阿.谢谢
搜索更多相关的解决方案: 指针  struct  int  赋值  NULL  

----------------解决方案--------------------------------------------------------
你提的问题,我也不知道...
我帮你顶给高人吧...
我把问题转化了
#include"stdio.h"
struct aa
{
    int a;   
};

struct bb
{
    int b;
  struct aa (*c)[100];  
};
void main()
{
struct bb b1;
struct aa a1[100];
a1[0].a=100;
a1[1].a=1000;

b1.c=&a1;
//printf("%0x,%0x\n",*(b1.c),a1);好用b1.c来引用a1数组的元素吗?

}
----------------解决方案--------------------------------------------------------
应该是数组指针吧。
struct bb b1;
struct aa a1[2][100];
b1.c = a1;        //这样可以
b1.c = &a1[1];    //这样可以
----------------解决方案--------------------------------------------------------
楼上的兄弟,怎么通过b1.c来引用数组元素呢...
----------------解决方案--------------------------------------------------------
// C99 标准支持不定长数组

struct data
{
    int count;
    int ar[];   
};

int n = 52;
struct data * t;

t = (struct data *)malloc(sizeof(struct data) + sizeof(int) * n);
t->count = n;


// DEV-C++ 通过


[[it] 本帖最后由 cosdos 于 2008-3-6 22:42 编辑 [/it]]
----------------解决方案--------------------------------------------------------
[bo]以下是引用 [un]sunkaidong[/un] 在 2008-3-6 21:36 的发言:[/bo]

楼上的兄弟,怎么通过b1.c来引用数组元素呢...


换个例子你看
    int a[2][4] = {1,2,3,4,5,6,7,8};
    int (*p1)[4] = a;
    int (*p2)[4] = &a[0];

    printf("%d\n",p1[1][3]);
    printf("%d\n",(*p2)[3]);

楼上说的对,c99支持不定长数组,c++不支持,dev-cpp部分支持c99
----------------解决方案--------------------------------------------------------
楼上的你说的我知道..我是想考虑能不能用b1.c.a之类方式的引用结构体a[i].a
----------------解决方案--------------------------------------------------------
[bo]以下是引用 [un]sunkaidong[/un] 在 2008-3-7 13:42 的发言:[/bo]

楼上的你说的我知道..我是想考虑能不能用b1.c.a之类方式的引用结构体a.a


你首先得弄清楚b1.c是个什么类型,它是个指针。
int *pi;
我就这样定义个指针,你能通过pi引用what?
----------------解决方案--------------------------------------------------------
#include"stdio.h"
struct s
{
    int a;
    int b;
}
main()
{
    struct s a[2][4];
    struct s (*p1)[4] = a;
    struct s (*p2)[4] = &a[0];

    printf("%d\n",p1[1][3].a);
    printf("%d\n",(*p2)[3].b);
}
----------------解决方案--------------------------------------------------------
首先,你写的是一个不定长的数组的指针。而不是不定长指针数组。
其次,定义一种指向不定长数组的指针是很奇怪的。我不能理解你的意图。
----------------解决方案--------------------------------------------------------
  相关解决方案