Lavoro molto in varie lingue, molte delle quali sono linguaggi di scripting come JavaScript, Shell Scripting, PHP e così via. Ma lavoro molto anche con Java, che è più vicino a un linguaggio più "reale".
C / C ++ è sempre stato un interesse, ma non mi è servito molto. Ho avuto alcune piccole cose in alcuni progetti Java che dovevano essere delegati a una soluzione più veloce, soprattutto quando si trattava di un sacco di operazioni sui file. Per questo ho usato C ++ perché ha alcune astrazioni come la stringa e tale che mi permette di evitare la maggior parte degli stili di puntatore di C "*".
Ma non sono riuscito a ottenere tutto in C ++, ho solo letto quello di cui avevo bisogno per farlo funzionare. E fare qualcosa senza sapere pienamente quello che stai facendo, può causare problemi. Ad esempio, è facile creare perdite di memoria senza problemi con il compilatore. Solo perché qualcosa compila e corre, non significa che non abbia problemi.
Quindi ora ho deciso di passare un po 'di tempo con questo correttamente. E non C ++, perché tu stai ancora impegnando C per molto tempo, quindi meglio capirlo prima, prima di iniziare con l'altro.
Per la maggior parte C è abbastanza facile. Quello che trovo problematico sono i suggerimenti. So quali sono i suggerimenti. Ma nella maggior parte delle lingue lavori con riferimenti e non con puntatori direttamente, quindi mi sta dando un po 'di grattacapi per capire esattamente a cosa sto lavorando alcune volte.
Esempio
char *cvar;
cvar = "";
*cvar = "";
Nell'esempio sopra, credo che il primo sia corretto? Il secondo tenta di cambiare il puntatore e non il contenuto?
char *cvar = "";
Ma se è così, perché è corretto? I valori letterali restituiscono valori o indicatori? Perché le cuciture come se varia o mi sbaglio quando lavoro con valori o puntatori.
function name(char *arg) {
}
name(&cvar);
C passa per valore, quindi cosa ottengo nella funzione? Puntatore copiato che punta allo stesso luogo / valore?