Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Corsair iCUE 4000X RGB, un case adatto a PC sobri, ma non troppo. La recensione
Corsair iCUE 4000X RGB, un case adatto a PC sobri, ma non troppo. La recensione
La nuova Serie 4000 di Corsair si caratterizza per eleganza e semplicità nelle linee, ed anche per gli ottimi materiali utilizzati e l'attenzione per i dettagli utili per l'installazione di un sistema al suo interno. In particolare il modello iCUE 4000X RGB nasconde, dietro l'indole all'apparenza sobria, tre ottime ventole con LED RGB integrati.
GeForce RTX 3090 in test, Nvidia Ampere all'ennesima potenza
GeForce RTX 3090 in test, Nvidia Ampere all'ennesima potenza
GeForce RTX 3090 Founders Edition è la scheda video al top di gamma della nuova offerta Ampere di Nvidia. Equipaggiata con una GPU ancora più potente di quella del modello GeForce RTX 3080 e con ben 24 GB di memoria GDDR6X, RTX 3090 non solo è la scheda video gaming più veloce al mondo ma anche un ottimo prodotto per i content creator.
Canon EOS C70: la cinepresa digitale 4K mirrorless RF
Canon EOS C70: la cinepresa digitale 4K mirrorless RF
Canon EOS C70 porta l'innesto mirrorless RF di EOS R sulla serie Cinema EOS e si presenta come la cinepresa digitale più leggera in casa Canon. Punto di forza il sensore CMOS 4K Super 35mm con DGO (Dual Gain Output), assieme al sistema autofocus Dual Pixel CMOS AF. Una videocamera pronta all'uso professionale sul campo, grazie alle numerose porte, che non richiedono accessori di espansione
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 05-08-2020, 14:17   #1
cioppone
Junior Member
 
Iscritto dal: Aug 2020
Messaggi: 1
[Linguaggio C] Alcuni problemi con i puntatori

Buongiorno a tutti,
mi chiamo Davide e ho 36 anni.
La mia carriera professionale è lunga e variegata, motivo per cui è un po' difficile da raccontare in poche righe.

Le ultime mie esperienze sono state di docenza alle scuole superiori e adulti, da settembre inizierò con una società di intelligenza artificiale.
Adoro guidare e il cappuccino XD.

Dopo questa rapida presentazione, vi scrivo per chiedervi aiuto su una questione: nonostante i miei ricordi di C arrivino dalle superiori e da un lavoro svolto nel 2005, mi pare di ricordare abbastanza bene alcune regole.

1) dichiarazione variabile. Es: int a;
2) dichiarazione di puntatore a variabile. Es: int *b;
3) passare da variabile a indirizzo della variabile: &a;
4) passare da indirizzo a contenuto della variabile: *b;
5) passaggio funzione per riferimento. Es: int funzione(int *a, int *b) -> se modifico a e b all'interno della funzione, cambiano anche nel chiamante

Detto questo, ho del codice così scritto, che serve a inserire un nuovo elemento in una lista linkata (struct formata da char* + puntatore a nuovo elemento). Salto i dettagli dell'algoritmo.

Codice:
int put_nuovo_valore(Valore *lista,char *nuovo_valore)
{
    if (lista==NULL)
    {
        lista=(Valore *)malloc(sizeof(Valore));

        //Se la malloc dà errore
        if(lista==NULL)
            return -1;

        // inserisco i dati nel primo elemento della lista

        return 0;
    }

    // inserisci nuovo elemento (modifica della variabile lista)
    return 0;
}
In buona sostanza questa funzione modifica la lista, creandola o aggiungendo un nuovo elemento.
Questo dovrebbe essere un passaggio per riferimento, quindi se modifico il puntatore "lista", dovrei vedermi modificata la struttura dati nel chiamante.

Questo non avviene, e non capisco come mai.

Qualcuno può darmi una mano? grazie

Davide

Ultima modifica di cioppone : 05-08-2020 alle 14:44.
cioppone è offline   Rispondi citando il messaggio o parte di esso
Old 06-08-2020, 15:07   #2
melko
Member
 
L'Avatar di melko
 
Iscritto dal: Feb 2011
Messaggi: 46
Quote:
Originariamente inviato da cioppone Guarda i messaggi
In buona sostanza questa funzione modifica la lista, creandola o aggiungendo un nuovo elemento.
Questo dovrebbe essere un passaggio per riferimento, quindi se modifico il puntatore "lista", dovrei vedermi modificata la struttura dati nel chiamante.
In C qualsiasi argomento di una funzione viene passato per valore sostanzialmente. Quando l'argomento è un puntatore, l'indirizzo viene passato per valore (e quindi copiato), ma essendo un indirizzo ti permette poi (deferenziandolo) di accedere all'oggetto originale.

Nel caso di Valore *lista, fare lista=malloc() modifica la copia locale del puntatore, non ciò a cui esso punta.

Per raggiungere il tuo scopo si usa passare alla funzione Valore **lista (passando quindi l'indirizzo del puntatore) facendo poi *lista=malloc()
melko è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Corsair iCUE 4000X RGB, un case adatto a PC sobri, ma non troppo. La recensione Corsair iCUE 4000X RGB, un case adatto a PC sobr...
GeForce RTX 3090 in test, Nvidia Ampere all'ennesima potenza GeForce RTX 3090 in test, Nvidia Ampere all'enne...
Canon EOS C70: la cinepresa digitale 4K mirrorless RF Canon EOS C70: la cinepresa digitale 4K mirrorle...
POCO X3 NFC: tanto a poco prezzo. Un altro best buy? La recensione POCO X3 NFC: tanto a poco prezzo. Un altro best ...
BenQ SW321C: il monitor per chi stampa fotografie BenQ SW321C: il monitor per chi stampa fotografi...
LinkedIn cambia grafica su desktop e mob...
iOS, app di messaggistica di terze parti...
Google Pixel 5 in arrivo il 15 ottobre, ...
L'impatto dell'intelligenza artificiale ...
Boom monopattini in Italia: forte aument...
I giochi di Xbox su iPhone in streaming:...
Equinix e VMware estendono la collaboraz...
Football Manager 2021 in arrivo, ma non ...
Come gestiscono i dati le aziende? Ce lo...
Settore gaming sotto attacco, secondo gl...
G.Skill annuncia kit di memoria DDR4-400...
L'accordo tra Governo Italiano e NASA no...
Fujifilm X-S10: svelate alcune caratteri...
Windows XP e il tema segreto ufficiale p...
Google Maps, il nuovo layer mostra dove ...
FurMark
Chromium
IObit Uninstaller
GPU Caps Viewer
Opera Portable
Opera 71
Zoom Player Free
CCleaner Portable
CCleaner Standard
Skype
CrystalDiskInfo
Driver Booster
3DMark
K-Lite Codec Pack Update
K-Lite Mega Codec Pack
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 19:22.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Served by www1v