|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Nov 2010
Messaggi: 211
|
[C++] Notazioni fuori di testa
Salve, sto studiando il C++ e mi sono imbattuto in una discussione si stackoverflow dove viene spiegata la differenza tra mettere la keyword const in una posizione piuttosto che in un'altra.
http://stackoverflow.com/questions/1...active#tab-top Quello che non capisco è il caso in cui invece di una singola dichiarazione faccio una dichiarazione di variabili multipla. Codice PHP:
Ora facciamo un altro esempio Codice PHP:
Perché se metto "const" prima dovrebbe far parte del tipo mentre se lo metto dopo non fa parte del tipo? Che mente malata bisogna avere per inventare una sintassi tanto difficile, piena di particolarità e casi speciali? Quale è il criterio, nel caso di dichiarazione di più variabili? Intendo: come posso sapere a priori cosa fa parte del tipo e cosa no, senza fare dei test, solo leggendo il codice. Ultima modifica di biowep : 22-10-2014 alle 21:17. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Premesso che un doppio puntatore const non serve a niente, quando insegnarono a me il C dissero che le dichiarazioni si leggevano al contrario
![]() int * const * const=const pointer to const pointer to int int * const = const pointer to int const int * = pointer to const int Messa così non è troppo difficile da capire ![]() |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Nov 2010
Messaggi: 211
|
Ok, ma quale parte del nome si tiene quando si dichiarano più variabili nella stessa istruzione? Perché la costante messa prima ha più valore di quella messa dopo?
Ultima modifica di biowep : 22-10-2014 alle 16:37. |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
Divertente:
![]() |
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Nov 2010
Messaggi: 211
|
Provando e riprovando mi sembra di capire che il tipo che condividono le varie variabili sia fin dove inizia il nome del tipo
![]() Ma c'è un'eccezzione, const int ed int cost sono la stessa cosa (nel senso che entrambe le variabili saranno interi costanti in entrambi i casi) Me lo potete confermare? @vendettaaaaa Scusami, il valore è 12345, ho sbagliato a riportare purtroppo. Ho corretto anche il primo post. Ultima modifica di biowep : 22-10-2014 alle 21:36. |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
|
Nella dichiarazioni dei puntatori a variabili quando lo fai multiple volte su una riga devi ripetere il puntatore, tipo:
int *a, c; a e' int* c e' int int *a, *c; a e c sono int* int a, *const b; a e' int b e' int * const (puntatore costante a un int) Ciao
__________________
GPU Compiler Engineer |
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
Quote:
"Codice PHP: " e dentro c'è codice C++ ![]() |
|
![]() |
![]() |
![]() |
#8 | |
Member
Iscritto dal: Aug 2004
Messaggi: 39
|
Quote:
Codice:
int * const * const p; è const (int**)p: int * [const] * [const] | p è const (int*)*p: int * [const] | * [const] p int * const q; è const (int*)q: int * [const] | q const int * r; è const (int)*r: [const] | [int] * r int const ** s; è const (int)**s: int [const] | ** s int * const ** const * const z; è const (int****)z: int * [const] ** [const] * [const] | z è const (int***)*z: int * [const] ** [const] | * [const] z è const (int*)***z: int * [const] | ** [const] * [const] z Codice:
z = a; // Errore *z = b; // Errore **z = c; // OK ***z = d; // Errore ****z = e; // OK
__________________
Quello che davvero mi interessa è se Dio, quando creò il mondo, aveva scelta. Ultima modifica di SnakePlissken : 25-10-2014 alle 09:28. |
|
![]() |
![]() |
![]() |
#9 |
Member
Iscritto dal: Nov 2010
Messaggi: 211
|
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:41.