2013-06-27 2 views
0

나는 다음과 같은 코드를 가지고 : 다음배열에 sizeof의 포인터

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으로 가져올 수 있습니까?

+0

아니요, 모든 포인터는 동일한 크기가 아니며 배열이 아닌 포인터의 크기입니다. –

답변

1

배열이 함수 ID로 전달되면 포인터가 쇠퇴하고 크기 정보가 손실됩니다.

여기

당신은 포인터 당신이 크기에 관한 정보를 얻고 싶은 경우에 당신은 함수에 추가 인수를 전달해야합니다

sizeof(hello_p); 
sizeof(world_p); 

의 크기를 얻고있다.

0

hello 및 world 배열에 대한 포인터의 크기를 가져올 수 있습니까?

포인터의 크기는 모든 유형에서 동일해야합니다. 따라서 Hello*World*에 대한 포인터의 크기는 모두 int*과 같아야합니다 (예 :).