qua il nerd-o-meter ha sfondato over9000, eh![]()
qua il nerd-o-meter ha sfondato over9000, eh![]()
Se ho capito bene, invece di allocare una stringa con il valore passato, crea una stringa contenente "null"
Non mi sembra grave a meno che non ci sia un trick con in puntatori che al momento non mi salta all'occhio![]()
essendo un "allocator", in realtà non dovrebbe neanche copiare alcunchè, dovrebbe restituire un puntatore a una stringa di lunghezza tot.
se no dovrebbe chiamarsi qualcosa come "strcpy"che esiste già
piuttosto non capisco l'inizializzazione a NULL di *pInitValue ed il successivo if
La funzione dovrebbe allocare ed eventualmente inizializzare la stringa con quella passata come secondo argomento. Ia gabola e' che tu crei la string ainizializzata e questa in effetti passa il controllo di validita' nel main() poi pero' quando vai a stamparla sorpresa: viene fuori "null" come se il puntatore non fosse valido (nell'esempio sopra viene stampato sia come string a che come puntatore ma nel codice originale non era cosi')..
tieni presente che e' un codice che ho scritto in 5 minuti per darvi una idea, non e' il codce reale dove ho trovato il problema.
E' un valore di default: in C++ posso specificare un valore di default per gli argomenti di una funzione, in tal modo posso ometterli. In pratica cosi' facendo, se non devo inizializzare la stringa ma solo allocarla, posso chiamare strAllocator() passandogli solo la lunghezza:
l'if all'interno serve appunto a capire se oltre allocare devo anche inizializzare usando appunto strcpy().Codice:strAllocator( 20 ) // Equivale a strAllocator( 20, NULL ).
+22.437 Messaggi dillà...
Il mio blog: Notti a (Video)Giocare <- (100% ADS FREE!!)
CPU: i7-11700K@5GHz|GPU: RTX-4070 Super Trinity |RAM: 64GB DDR4@3200MHz|SSD: 980 Pro + 2x 970EVO Plus|HOTAS Warthog|TrackIR 5|
Sono arrugginito con il C, ma se si usa printf, con un puntatore NULL, stampa proprio 'null'?![]()
Non ho mai usato il c++ sul lavoro, che differenza fa scrivere NULL anziché 0?
È solo una convenzione o il compilatore potrebbe dare risultati diversi?
Ok, ma quindi con tutte queste belle sorprese nel codice, come cazzarola vi funzionano i programmi ????
TI ricordo che in C (Ansi-C) il tipo bool non esiste. Il linguaggio considera "falso" il valore 0 e "vero" tutti i valori diversi da zero (inclusi i negativi). Sembra un dettaglio ma non lo e': La libreria standard definisce le macro TRUE e FALSE ma vano usate con attenzione, specie nel caso di confronti con TRUE.
Dipende dalla libreria C/C++ che vai a linkare. La versioni "debug" moderne ti fanno il favore di stampare "null" o "null string" se fai una cosa tipo questa:
come TRUE e FALSE, NULL e' in genere una macro del compilatore:Codice:char *string = NULL; printf ("La stringa vale: [%s]", string );
Quindi usare 0 o NULL non cambia nulla, eccetto che il codice e' piu' leggibile se usi NULL.Codice:#define NULL 0 // in C (Ansi) #define NULL ((void *)0) // in C++ (x98 - x10)
Da C++ x11 in poi e' stata introdotta la keyword nullptr che e un vero e proprio valore di tipo nullptr_t.
vero, ma per fortuna quei sistemi oramai sono solo (brutti) ricordi lontani.
Infatti quel codice non funzionava![]()
Ultima modifica di LordOrion; 28-08-17 alle 22:05
+22.437 Messaggi dillà...
Il mio blog: Notti a (Video)Giocare <- (100% ADS FREE!!)
CPU: i7-11700K@5GHz|GPU: RTX-4070 Super Trinity |RAM: 64GB DDR4@3200MHz|SSD: 980 Pro + 2x 970EVO Plus|HOTAS Warthog|TrackIR 5|
Ultima modifica di Mad_One; 29-08-17 alle 08:20
Si, ma non tantissimo: in genere e' richiesto da quelle aziende che lavorano sul "ferro" come i sistemi embedded.
Se mi aspetto un booeano in C controllo con cose tipo:
Controllare con 0 e 1 (con 1 in particolare) e' una cazzata da primo giorno di corso di informatica base PROPRIO a causa di come C/C++ trattano i valori logici. Ecco perche' insisto nel sottolineare che C/C++ considerano vero come "!=0"Codice:if ( <espressione> ) // -> if ( <espressione> == vero ) ... if ( !<espressione> ) // -> if ( <espressione> == falso ) ...
E ni, il valore 452 alla cazzo ritornato come valore logico booeano da qualche funzione sarcazzo sara' forse anche un problema (frequente), ma fare controlli con 0 e 1 e' andarseli a cercare i problemi: l'equivalente informatico di entrare nella sede di Casa Pound con la maglia di Che Guevara
- - - Aggiornato - - -
Ci sono, ma sono nascosti![]()
Ultima modifica di LordOrion; 29-08-17 alle 09:10
+22.437 Messaggi dillà...
Il mio blog: Notti a (Video)Giocare <- (100% ADS FREE!!)
CPU: i7-11700K@5GHz|GPU: RTX-4070 Super Trinity |RAM: 64GB DDR4@3200MHz|SSD: 980 Pro + 2x 970EVO Plus|HOTAS Warthog|TrackIR 5|
http://catb.org/jargon/html/magic-story.html
Esempio pratico (suppongo, non letto):
So I just had a "magic"/"more magic" moment today.
http://forums.xkcd.com/viewtopic.php?t=53960
Vabbo mi tengo stretto Java, che ok sarà il COBOL del 21esimo secolo ma figa, almeno non devo stare lì a controllare che valore ha NULL questa settimana
Inviato dal mio p9 lite utilizzando Tapatalk
Ma c'è lavoro in c++ in italia?
Un mio ex compagno di scuola ha trovato solo a milano qualcosa di degno
Qui in veneto nada, solo java, cobol e roba web/mobile.
Mr Pink, Guerriero da tastiera !!! Profilo su steam.
Lista chiavi Steam
Problemi con l'inutile svapo o altri? La soluzione è qui.