比方說,我有以下結構:指向結構的指針的大小是否隨着爲該結構分配內存而增加?
typedef struct
{
int length ;
int * data ;
} Array ;
而在我的主要功能我做了以下內容:
int length = 10;
char * filename = " data ";
// create an object
Array * arrptr1 = NULL ;
printf (" sizeof (arrptr1) = % d \ n ", (int) sizeof (arrptr1));
arrptr1 = malloc (sizeof (Array));
printf (" sizeof (arrptr1) = %d , sizeof (Array) = % d \ n" ,
(int) sizeof (arrptr1) , (int) sizeof (Array));
// allocate memory for the data
arrptr1 -> length = length ;
arrptr1 -> data = malloc (sizeof (int) * (arrptr1 -> length));
printf (" sizeof (arrptr1) = %d , sizeof (arrptr1 -> data) = % d \ n " ,
(int) sizeof (arrptr1) , (int) sizeof (arrptr1 -> data));
什麼將要打印的每個打印報表?
我知道第一個打印,sizeof(arrptr1)
只是一個垃圾值。
對於第二次打印,將sizeof(arrptr1)
= 8和sizeof(Array)
= 8以及?
第三個打印語句輸出什麼?
指針的大小不會改變,但我想你詢問指針指向的內容的大小。 – Rob
'sizeof(some_pointer_variable_or_type)'返回指針*的大小,而不是它指向的內容。 –
指針包含結構的第一個字節的地址。爲什麼指針大小會增加? – StoryTeller