tömb elemeinek száma

Fórumok

Hogy tudnám azt megállapíteni, hogy egy ilyen tömb hány elemből áll?


char *conf_f[]="server_port","time_out","mysql_host","mysql_user","mysql_password","mysql_database","."};

Hozzászólások

conf_f - ben 7 darab char * pointered lesz, amik a tomb ellemeire mutatnak , conf_f -re a sizeof meg a 7 szer az egy pointer meretevel fog visszaterni. ( fuggetlenul a szoveg meretetol amikkel inicializaltad a tombot )
tehat sizeof( conf_f ) az nallam kb. 28-at ad vissza. ezt osztjuk a sizeof ( char * ) al, es pont 7-et kapunk, amit kerestunk eredetileg.

Nem trivialis:


#include <stdio.h>

char *conf_f[]={"server_port","time_out","mysql_host","mysql_user","mysql_passwo
rd","mysql_database","."};

int funct(char *c[])
{
 int n;
 n=sizeof(c) / sizeof ( char * );
 printf("f=%d\n",n);
 return(0);
}
int main()
{
 int n;
 n=sizeof(conf_f) / sizeof ( char * );
 printf("n=%d\n",n);
 funct(conf_f);
 return(0);
}

a funct() fv ugyanazt a tipust eszi, mint a kerdeses tomb maga; viszont mar nem a jo' eredmenyt adja vissza. Akkor is, ha a funct(char *c[7])-kent deklaralod.

Szvsz az effele tomb-deklaraciokat zarja le a juzer mindig NULL-lal, es ha szukseges (azaz kell a me'rete), szamolja meg. Akkor tetszoleges fv-nek at lehet adni. Mintha string lenne.

A.