比方说,我有以下结构:指向结构的指针的大小是否随着为该结构分配内存而增加?
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