指向数组的sizeof指针

时间:2013-06-27 13:25:40

标签: c arrays pointers

我有以下代码:

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函数中,我可以获得指向helloworld数组的指针的大小吗?

2 个答案:

答案 0 :(得分:1)

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

在这里你得到指针的大小

 sizeof(hello_p);
 sizeof(world_p);   

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

答案 1 :(得分:0)

  

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

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