Visualizzazione dei risultati da 1 a 8 su 8

Hybrid View

  1. #1
    Innanzi tutto grazie mille per la risposta ...
    Visto che mi hai praticamente corretto tutto volevo chiederti alcune delucidazioni se non ti dispiace.. anche per capire meglio tutto!
    A parte le inclusioni (ok stdlib, string mi hai illuminato ero convinto si potessero copiare le stringhe tranquillamente, ri-grazie)
    coomunque ricapitolando:

    1) Ho visto che mi hai corretto la definizione di STRINGA ... ma se io uso
    codice:
    typedefchar * STRINGA;
    
    non dovrebbe in automatico creare un array di caratteri della lunghezza della stringa che di volta in volta vado a passare?

    2) Hai ragione non ci avevo pensato che idiota. Niente metodi in C!!! Quindi mi tocca passare ogni volta l'elemento su cui operare alle funzioni... e ovviamente trasformare tutto in puntatori (fin qui ci sono)
    Ma così facendo dove lo metto il puntatore "list" che dovrebbe puntare al primo record se esistente o a null altrimenti..

    3) Perchè la logica è scorretta se vi è solo un elemento? o se si cancella il primo elemento inserito? (sempre per via della sparizione del puntatore "list" o non c'entra? )

    4) ok i ritorni li sistemavo dopo grazie comunque!

    5) Un ultima domanda, se all'interno delle funzioni invece di creare un altro "Dato *p" potrei utilizzare direttamente il "*d" che passo come argomento alla funzione o questo andrebbe a creare casini???

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Quote Originariamente inviata da deimos88 Visualizza il messaggio
    1) Ho visto che mi hai corretto la definizione di STRINGA ... ma se io uso
    codice:
    typedefchar * STRINGA;
    
    non dovrebbe in automatico creare un array di caratteri della lunghezza della stringa che di volta in volta vado a passare?
    Forse intendi
    codice:
    typedef char *STRINGA;
    In ogni caso no: char * è solo un puntatore a carattere che contiene un indirizzo di memoria, questa memoria devi allocarla tu. Il metodo più semplice è usare un array al posto di un puntatore, il metodo più difficile è quello di aggiungere un po' di funzioni che ti gestiscano la memoria e allacorla dinamicamente.
    Quote Originariamente inviata da deimos88 Visualizza il messaggio
    2) Hai ragione non ci avevo pensato che idiota. Niente metodi in C!!! Quindi mi tocca passare ogni volta l'elemento su cui operare alle funzioni... e ovviamente trasformare tutto in puntatori (fin qui ci sono)
    Ma così facendo dove lo metto il puntatore "list" che dovrebbe puntare al primo record se esistente o a null altrimenti..
    Puoi creare una struttura e che non è altro la parte di non-metodi che utilizzeresti in un linguaggio ad oggetti, tuttavia nel tuo codice hai un solo elemento per cui il creare una struttura con un solo elemento è (per dire) un surplus, quindi ti basta un puntatore all'elemento.

    Quote Originariamente inviata da deimos88 Visualizza il messaggio
    3) Perchè la logica è scorretta se vi è solo un elemento? o se si cancella il primo elemento inserito? (sempre per via della sparizione del puntatore "list" o non c'entra? )
    Perché l'elemento della lista da cui tu accedi agli altri è sempre il primo che hai inserito, quindi se cancelli il primo elemento inserito non sarai più in grado di accedere agli altri.
    Perché se la lista ha un solo elemento e lo cancelli la "testa" della lista non sarà impostata a NULL.

    Quote Originariamente inviata da deimos88 Visualizza il messaggio
    4) ok i ritorni li sistemavo dopo grazie comunque!
    Ti avrebbero dato errore o warning in compilazione.

    Quote Originariamente inviata da deimos88 Visualizza il messaggio
    5) Un ultima domanda, se all'interno delle funzioni invece di creare un altro "Dato *p" potrei utilizzare direttamente il "*d" che passo come argomento alla funzione o questo andrebbe a creare casini???
    Sì e no, cerca di capire da solo il perché
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

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