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","."};
- 2102 megtekintés
Hozzászólások
sizeof(conf_f) / sizeof ( char * )
- A hozzászóláshoz be kell jelentkezni
de így azt kapom meg milyen nagyságú a tömb, nem?
de nekem meg az kéne, hogy hány különböző elemre tudok benne hivatkozni, ami jelen esetben 7
- A hozzászóláshoz be kell jelentkezni
kipróbáltad?
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
lentebb reagáltam, igen pont ugyan ide jutottam én is, csak elsőre nem gondoltam át rendesen :) köszi
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
valóban igaz, hogy most utánna gondolok, mert a tömb az 7 db pointert tartalmaz, míg a fv-ben lévő tömb meg csak egyet.
Köszi a választ. Így már rájöttem én is hogy kell ezt nézni.
- A hozzászóláshoz be kell jelentkezni
sizeof(conf_f) / sizeof(*conf_f)
A különbség csak a kód karbantarthatóságában jelentkezik, mégpedig ha véletlenül változik a conf_f[] tipusa, akkor nem kell az osztóban lévő tipust is átírni.
- A hozzászóláshoz be kell jelentkezni