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 関数で、 と の配列へのポインタのサイズを取得できhelloます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 に答える