0

我有以下代码:

typedef struct
{
 int a;
 int b;
} Hello;

typedef struct
{
 char c;
 int d;
} World;

Hello hello[10][10];
World world[5];

然后我有以下功能:

void getInfo(Hello hello_p[][10], World* world_p)
{
     // Here I suppose to get the size of pointer to the array of hello and world
     sizeof(hello_p);
     sizeof(world_p);   
}

void getHello(Hello (** hello_p)[10])
{
    hello_p = hello;
}

void getWorld(World ** world_p)
{
    world_p = world;
}

然后我调用这个函数:

Hello (*hello_p)[10]      = NULL;
World *world_p    = NULL;


getHello(&hello_p);
getWorld(&world_p);

getInfo(hello_p, world_p);

然后在 getInfo 函数中,我可以获得指向helloand数组的指针的大小world吗?

4

2 回答 2

1

当数组传递给函数时,id 会衰减为指针,并且大小信息会丢失。

在这里你得到指针的大小

 sizeof(hello_p);
 sizeof(world_p);   

如果您想获得有关其大小的信息,则必须向该函数传递一个附加参数。

于 2013-06-27T13:28:40.377 回答
0

我可以获得指向 hello 和 world 数组的指针的大小吗?

对于任何类型,指针的大小都应该相同。因此,指向Hello*和的指针的大小World*都应该与int*(例如)相同。

于 2013-06-27T13:29:07.040 回答