Informatică, întrebare adresată de moonlight01, 9 ani în urmă

Salut ! As vrea sa-mi explice cineva cateva randuri dintr-un cod c++.. Codul este urmatorul:
int main()
{
char *a, s[20]="Acesta este un sir";
int lg,i;
for(a=s;*a;a++);
lg=a-s;
cout<<"Lungimea sirului este:"<
Este vorba de ultimele 3 randuri, de la acel "for" , nu inteleg logica , cum se calculeaza mai exact.

Răspunsuri la întrebare

Răspuns de florinache73
3

char *a

a este un pointer la o variabila de tip char.

char s[20]="Acesta este un sir"

s[0] ='A' s=&s[0]=adresa lui A          *s='A'

s[1]='c'    &s[1]=s+1 =adresa lui c       *(s+1)='c'

s[17]='r' &s[17]=s+17=adresa lui r        *(s+17)='r'

s+18=ctrl-z   (sfarsit de sir)                 *(s+18)=0

Ciclul for:

a=s ( a este adresa lui A)   *a nu este nul a++

a=s+1  (a este adresa lui c) ............

Ne oprim cand *a=0 adica a este s+18.

Lungimea sirului este s+18-s=18.


moonlight01: Multumesc mult !
Alte întrebări interesante