我有以下代码:
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函数中,我可以获得指向hello
和world
数组的指针的大小吗?
答案 0 :(得分:1)
当数组传递给函数时,id衰减到指针并且大小信息丢失。
在这里你得到指针的大小
sizeof(hello_p);
sizeof(world_p);
如果您想获得有关其大小的信息,则必须向该函数传递一个额外的参数。
答案 1 :(得分:0)
我可以获得指向hello和world数组的指针的大小吗?
对于任何类型,指针的大小应该相同。因此指向Hello*
和World*
的指针的大小应与int*
相同(例如)。