Article View: es.comp.os.linux.programacion
Article #6211Re: [C/C++] Conocer la longitud de un 'array' de punteros
From: Piojo
Date: Mon, 21 Jul 2003 21:49
Date: Mon, 21 Jul 2003 21:49
43 lines
2359 bytes
2359 bytes
Han Solo dijo:
> Supongamos que tengo una funci�n que devuelve un puntero a struct, que
> es en realidad un array. �ha manera de saber el n�mero de elementos de
> ese array?. Lo he intentado con sizeof(), pero no funciona
Imaginemos este c�digo:
---------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int a[100];
int *p = malloc (100*sizeof(*p));
printf ("%10d%10d\n", sizeof(a), sizeof(p));
free (p);
return 0;
}
---------------------------------------------------------------------------
La salida es:
400 4
Es decir: para memoria est�tica, sizeof(a) te da el resultado que quieres.
Pero para memoria din�mica, sizeof(p) te da el tama�o del puntero, que son
4 bytes (en un PC).
Si tu struct es un puntero reservado con malloc o similares, lo m�s habitual
es que hagas algo del tipo
struct
{
int nelems;
int * datos;
};
para almacenar los datos. As� puedes llevar juntos los datos y la dimensi�n
del array.
La otra opci�n, si tus accesos al array van a ser siempre secuenciales
(desde el primer elemento y con saltos de uno) es que escojas un valor como
delimitador de tu array. Como un '\0' en una cadena de caracteres.
Technical Details
Message-ID:
<bfhn4q$j00$1@news.ya.com>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!logbridge.uoregon.edu!newsfeed.vmunix.org!fu-berlin.de!nsnmpen1-lo.nuria.telefonica-data.net!news.ya.com!yacom!not-for-mailReferences:
<861xwkq6jb.fsf@pc147.ietcc.csic.es>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: f86c8,9e7385e39807d1e3 X-Google-Attributes: gidf86c8,public X-Google-ArrivalTime: 2003-07-21 14:50:03 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!logbridge.uoregon.edu!newsfeed.vmunix.org!fu-berlin.de!nsnmpen1-lo.nuria.telefonica-data.net!news.ya.com!yacom!not-for-mail From: Piojo <piojolinux@ya.com> Newsgroups: es.comp.os.linux.programacion Subject: Re: [C/C++] Conocer la longitud de un 'array' de punteros Date: Mon, 21 Jul 2003 23:49:06 +0200 Organization: ya.com internet factory Lines: 43 Message-ID: <bfhn4q$j00$1@news.ya.com> References: <861xwkq6jb.fsf@pc147.ietcc.csic.es> NNTP-Posting-Host: 80-25-211-52.adsl.ya.com Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Transfer-Encoding: 8Bit X-Trace: news.ya.com 1058824155 19456 80.25.211.52 (21 Jul 2003 21:49:15 GMT) X-Complaints-To: newsmaster@ya.com NNTP-Posting-Date: Mon, 21 Jul 2003 21:49:15 +0000 (UTC) User-Agent: KNode/0.7.2