🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #6211

Re: [C/C++] Conocer la longitud de un 'array' de punteros

#6211
From: Piojo
Date: Mon, 21 Jul 2003 21:49
43 lines
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-mail
References: <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