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

Discussione: [c] puntatori

  1. #1

    [c] puntatori

    volevo solo sapere se è giusto dire che con il sorgente seguente:

    1)dichiaro una variabile int a che è uguale a 10
    2)poi dichiaro un puntatore b
    3)e dico che b punta ad a

    include <stdio.h>

    int a=10;
    int *b;
    int main()
    {
    b=&a;
    return 0;
    }

    è giusto?sono vere la 1,la 2 e la 3?
    grazie
    mercuzio

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    173
    Esatto, ricorda che però con la scrittura &(indirizzo di)a, il puntatore b punta all'indirizzo di memoria in cui la var. a risiede!

    CIAO

  3. #3
    grazie,allora ho capito come funziano ma...a cosa possono servirmi?

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    173
    I puntatori sono una parte molto importante della programmazione in C, anche se le prime volte non lo si pensa dato che non li si usa molto!
    Beh, i puntatori offrono al programmatore un controllo + preciso sul comportamento dei dati, se passati assieme alle funzioni vi è la possibilità di moficare i valori degli argomenti precisando dove qusti siano stati generati. Si può scrivere programmi in C senza sfruttare i puntatori, ma così facendo nn si sfruttano le sue maggiori potenzialità, inoltre le tecniche di manipolazione dei puntatori permettono di scrivere codice + velocemente e efficacemente!

    Spero d aver kiarito 1 po le idee!

    CIAO

  5. #5
    hummm.......
    non mi sono molto chiari questi puntatori...
    ho capito quello che vuoi dirmi ma...mi sfugge questa essenzialità che essi hanno.
    magari approfondendo un po' la cosa mi torneranno più utili di quello che penso, come dici tu.
    grazie
    mercuzio

  6. #6
    prova:

    ........
    ........

    char c[10]="ciao ciao";

    char *p;

    int i;

    // con i puntatori:

    p = c; // <-- è uguale a <-- p =&c[0];

    printf("%s", p);

    // senza puntatori:

    for(i=0; i<10; i++) printf("%c", c[i]);

    // supponi ora di voler cambiare il valore dell'array c:

    p = "hello";

    for(i=0; i<10; i++) printf("%c", c[i]);
    ...Terrible warlords, good warlords, and an english song

  7. #7
    Ma dai Johnny_Depp! Quest`esempio non sta ne` in cielo ne` in terra :tongue: .. anche perche` non fa nella maniera piu` assoluta quello che dici .. :quipy:

    Mercuzio, tieni presente che con i puntatori puoi creare strutture di dati astratte anche complesse. Ecco, questo e` solo uno dei numerosi usi che se ne fanno, ma rende bene l`idea della loro importanza. Infatti senza strutture dati .. non si va molto lontano.

  8. #8
    :gren: si in effetti "oggi" sono un pò rinco...

    sarà perchè quando ho postato quella cosa
    ero appena uscito da un tour di 12 ore di studio intenso
    che mi hanno fuso letteralmente... :bubu:

    volevo scrivere questo:

    char *p, c='v', s[]="ciao";

    // p punta all'indirizzo in memoria di c
    p = &c;
    printf("P=%c\n", *p);
    printf("C=%c\n", c);

    // cambio il valore puntato da p (cioè il valore di c)
    *p = 'x';
    printf("C=%c\n", c);

    // ora faccio puntare p all'indirizzo in memoria del primo elemento della stringa s
    p = s; // equivale a p = &s[0]
    printf("S=%s\n", s);

    // cambio il valore della stringa s
    *p = 'o';
    *(++p) = 'a';
    *(++p) = 'i';
    *(++p) = 'c';
    printf("S=%s\n", s);

    // faccio "di nuovo" puntare p all'indirizzo del primo elemento di s
    p=s;
    printf("P=%s\n", p);

    Così dovrebbe andare... vero r0x? :tongue:
    ...Terrible warlords, good warlords, and an english song

  9. #9
    mi dice che char s[]='ciao' è incorretta.perchè?

  10. #10
    perchè:

    ciao è una stringa...

    char s[] ="ciao"; // le stringhe vogliono i doppi apici

    char s[] ="c"; // anche c è una stringa anche se "sembra" di un solo carattere...

    char s ='c'; // ora c è un carattere e non più una stringa
    ...Terrible warlords, good warlords, and an english song

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 © 2024 vBulletin Solutions, Inc. All rights reserved.