Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20

Discussione: [c]gestione array

  1. #1

    [c]gestione array

    Non sto rieso a capire come il c gestisce gli array.Il manuale che sto leggendo parla di gestione diversa dei puntatori,mi sto confondendo.
    Aiutoo!

    Inoltre qual è la differenza tra le 2 istruzioni:
    strcpy(s1,s2);
    s1=s2;

  2. #2
    Utente di HTML.it L'avatar di Cholo
    Registrato dal
    Aug 2002
    Messaggi
    680

    Re: [c]gestione array

    Originariamente inviato da matrics21
    strcpy(s1,s2);
    s1=s2;
    s1=s2 vuol dire assegnare al primo elemento dell' array s1, il primo elemento dell' array s2.

    praticamente s1[0] = s2[0]

    strcpy invece copia la stringa (che vuol dire l' array fino al terminatore '/0') s2 su s1.

    Cosa non capisci della gestione degli array ? :master:

  3. #3

    Re: [c]gestione array

    Originariamente inviato da matrics21
    Non sto rieso a capire come il c gestisce gli array.Il manuale che sto leggendo parla di gestione diversa dei puntatori,mi sto confondendo.
    Aiutoo!

    Inoltre qual è la differenza tra le 2 istruzioni:
    strcpy(s1,s2);
    s1=s2;
    RISPOSTA 1 - ARRAY e PUNTATORI

    L'aspetto che accomuna i puntatori e gli array è sostanzialmente il fatto che entrambi sono memorizzati in locazioni di memoria sequenziali, ed è quindi possibile agire su un array (se lo si vede come una serie di blocchi ad indirizzi di memoria sequenziali) come se si stesse agendo su un puntatore; ad esempio se dichiariamo un array "alfa" ed un puntatore "pointer":

    codice:
    // definisco un array ed una variabile intera
    int alfa[20], x;
    
    // creo il puntatore;
    int *pointer;
    
    // puntatore all'indirizzo di a[0]
    pointer = &a[0];
    // x prende il valore di pointer, cioè di a[0];
    x = *pointer;
    in questo modo

    pointer + i "è equivalente a" a[i]

    RISPOSTA 2

    la strcpy serve perche' una stringa e' un array di caratteri, quindi facendo un semplice assegnamento copi solo il primo elemento dell'array (cioe' s1=s2 e' come scrivere s1[0]=s2[0]) perche' il nome "s1" identifica solo il primo elemento.
    [Homepage] [Contattami]
    Powered by: Ubuntu - Debian - Gentoo
    Developing: Java - C++ - PHP

    [supersaibal]"Perchè tanto Debian è meglio"
    [/supersaibal]

  4. #4
    Non ho capito nemmeno io .

    In pratica posso gestire un array come lo gestisco in java?(escludendo la questione degli oggetti)

    Ho letto che c'è un modo diverso,per poterlo gestire si devono utilizzare i puntatori,

    Se per esempio carico un array così è giusto?

    int array[5];
    int cont;
    for(cont=0;cont<5;cont++)
    {
    fprint("Inserire un valore");
    fscan(array[cont]);
    }

  5. #5

    Re: Re: [c]gestione array

    Originariamente inviato da virusbye
    RISPOSTA 1 - ARRAY e PUNTATORI

    L'aspetto che accomuna i puntatori e gli array è sostanzialmente il fatto che entrambi sono memorizzati in locazioni di memoria sequenziali, ed è quindi possibile agire su un array (se lo si vede come una serie di blocchi ad indirizzi di memoria sequenziali) come se si stesse agendo su un puntatore; ad esempio se dichiariamo un array "alfa" ed un puntatore "pointer":

    codice:
    // definisco un array ed una variabile intera
    int alfa[20], x;
    
    // creo il puntatore;
    int *pointer;
    
    // puntatore all'indirizzo di a[0]
    pointer = &a[0];
    // x prende il valore di pointer, cioè di a[0];
    x = *pointer;
    in questo modo

    pointer + i "è equivalente a" a[i]

    RISPOSTA 2

    la strcpy serve perche' una stringa e' un array di caratteri, quindi facendo un semplice assegnamento copi solo il primo elemento dell'array (cioe' s1=s2 e' come scrivere s1[0]=s2[0]) perche' il nome "s1" identifica solo il primo elemento.
    scusa dove hai dichiarato l'array a?

  6. #6

    Re: Re: [c]gestione array

    Originariamente inviato da Cholo
    s1=s2 vuol dire assegnare al primo elemento dell' array s1, il primo elemento dell' array s2.

    praticamente s1[0] = s2[0]

    :master:
    assolutamente no, lui sta' parlando di puntatori(credo), quindi fare s1=s2
    vuol dire reindirizzare il 1 puntatore all' indirizzo di s2
    per intenderci e' come fare
    s1=&s2

  7. #7
    Utente di HTML.it L'avatar di Cholo
    Registrato dal
    Aug 2002
    Messaggi
    680

    Re: Re: Re: [c]gestione array

    Originariamente inviato da kentaromiura
    assolutamente no, lui sta' parlando di puntatori(credo), quindi fare s1=s2
    vuol dire reindirizzare il 1 puntatore all' indirizzo di s2
    per intenderci e' come fare
    s1=&s2
    se ci usa la strcpy sono portato a pensare si parli di array

  8. #8
    Sto parlando dell'istruzione in genere,non so quando e come si usa

  9. #9

    Re: Re: Re: Re: [c]gestione array

    Originariamente inviato da Cholo
    se ci usa la strcpy sono portato a pensare si parli di array
    infatti la differenza di strcopy e assegnazione e' questa..
    se tu fai strcpy

    char * strcpy ( char * dest, const char * src );

    passi il puntatore al primo char di dest
    e il puntatore al primo char di source

    quindi copia la stringa, e le 2 variabili risultano DIVERSE

    mentre fare src=dest

    se cambio src cambio anche dest
    poiche' puntano allo stesso array di char!!

  10. #10
    Utente di HTML.it L'avatar di ChReAn
    Registrato dal
    Aug 2002
    Messaggi
    486
    L'istruzione per assegnare il valore del primo elemento di s2 al primo elemento di s1 (posto che siano entrambi array) è

    codice:
    *s1=*s2
    Mentre

    codice:
    s1=s2
    Equivale a far puntare i due array entrambi alla stessa locazione in memoria, cosa di solito sconveniente in quanto alla modifica di uno dei due array anche l'altro subisce le medesime modifiche.

    Edit: in pratica ha ragione kentaro.
    ChReAn
    -------------------

    Slackware 9.1 powered

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.