voglio allocare una matrice. è questa l’unica opzione: int** mat = (int**)malloc(rows * sizeof(int*)) for (int index=0;index<row;++index) { mat[index] = (int*)malloc(col * sizeof(int)); }
Esiste un tipo intero con le stesse dimensioni del puntatore? Garantito su tutte le microarchitetture?
int* myPointer = new int[100]; // … int firstValue = *(myPointer + 0); int secondValue = myPointer[1]; C’è qualche differenza funzionale tra *(myPointer + index) e myPointer[index] ? Quale è considerata una pratica migliore?
Sto cercando di far puntare un puntatore a un array 2D di puntatori. Qual è la syntax e come accedo agli elementi?
Ho provato a guardare ma non ho trovato nulla con una risposta definitiva. So che il mio problema non può essere così difficile. Forse è solo che sono stanco .. Fondamentalmente, voglio dichiarare un puntatore a un array bidimensionale. Voglio farlo in questo modo perché alla fine dovrò ridimensionare l’array. Ho fatto quanto segue con […]
Dato che la mia variabile è un puntatore, se lo assegno a una variabile di tipo “auto“, devo specificare “*”? std::vector *getVector(); //returns populated vector //… std::vector *myvector = getVector(); //assume has n items in it auto newvar1 = myvector; // vs: auto *newvar2 = myvector; //goal is to behave like this assignment: std::vector *newvar3 […]
Innanzitutto, per chiarire, non sto parlando di dereferenziamento di indicatori non validi! Considera i seguenti due esempi. Esempio 1 typedef struct { int *p; } T; T a = { malloc(sizeof(int) }; free(ap); // ap is now indeterminate? T b = a; // Access through a non-character type? Esempio 2 void foo(int *p) {} int […]
Perché c’è bisogno di avere std::reference_wrapper ? Dove dovrebbe essere usato? In che cosa è diverso da un semplice puntatore? In che modo le sue prestazioni si confrontano con un semplice puntatore?
Ho usato il seguente pezzo di codice per leggere i dati da file come parte di un programma più grande. double data_read(FILE *stream,int code) { char data[8]; switch(code) { case 0x08: return (unsigned char)fgetc(stream); case 0x09: return (signed char)fgetc(stream); case 0x0b: data[1] = fgetc(stream); data[0] = fgetc(stream); return *(short*)data; case 0x0c: for(int i=3;i>=0;i–) data[i] = […]
Sono abituato a programmare in Java, dove non devi mai pensare ai puntatori durante la programmazione. Tuttavia, al momento sto scrivendo un programma in C ++. Quando faccio lezioni che hanno membri di altre classi, quando dovrei usare i puntatori e quando non dovrei? Ad esempio, quando vorrei fare questo: class Foo { Bar b; […]