Pointers 返回元素数

Pointers 返回元素数,pointers,size,Pointers,Size,如果我构建一个函数时引入了如下指针: int* c=new int[16]; 然后把它还给我 return c; 我怎样才能确定c的大小,16,在我的主。我不能使用sizeof,因为c不是数组…您无法获取动态分配数组中的元素数。在这种情况下,它将起作用: int c[16]; int num_elements=sizeof(c)/sizeof(int); 在您的例子中,sizeofc可能是指针的4个大小。因为c是指向int的指针,这就是int*c的意思,所以从sizeofc得到的正好是指向

如果我构建一个函数时引入了如下指针:

int* c=new int[16];
然后把它还给我

return c;

我怎样才能确定c的大小,16,在我的主。我不能使用sizeof,因为c不是数组…

您无法获取动态分配数组中的元素数。在这种情况下,它将起作用:

int c[16];
int num_elements=sizeof(c)/sizeof(int);
在您的例子中,sizeofc可能是指针的4个大小。

因为c是指向int的指针,这就是int*c的意思,所以从sizeofc得到的正好是指向int的指针的大小。这就是为什么sizeofc/sizeofint*给您1的原因

如果将c定义为数组,而不是指针:

int c[16];

您将获得它的大小。

@NickSlash-THX用于查找复制品。这很好地解释了这个问题!这个问题的可能重复是另一个问题。上面的SO链接回答了如何找到数组的元素数。问题是-如何通过指针找到分配的对象/数组大小。我认为必要的值可以通过读取接近字节的指针减去2/4来找到,这取决于malloc实现。他说他得到2,所以他可能在32位指针和16位整数系统上,或者64和32repectively@MattMcNabb:是的,我就是这么想的。