English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In linguaggio C, i puntatori void vengono convertiti implicitamente in tipo puntatore di oggetto. La funzionemalloc()
In lo standard C89 restituisce void *. Nei vecchi versioni di Cmalloc()
Restituisce char *. Di default in C++malloc()
Restituisce un valore int. Pertanto, è necessario utilizzare la conversione esplicita per convertire il puntatore in un puntatore di oggetto.
Di seguito è riportata la sintassi per allocare memoria utilizzando il linguaggio C.
pointer_name = malloc(size);
qui,
pointer_name-qualsiasi nome per il puntatore.
Dimensionedimensione della memoria allocata in byte.
Di seguito è riportato:malloc()
Esempio di linguaggio C.
#include <stdio.h> #include <stdlib.h> int main() { int n = 4, i, *p, s = 0; p = malloc(n * sizeof(int)); if(p == NULL) { printf("\nError! memory not allocated."); exit(0); } printf("\nEnter elements of array : "); for(i = 0; i < n; ++i) { scanf("%d", p + i); s += *(p + i); } printf("\nSomma: %d", s); return 0; }
Risultato di output
Inserisci gli elementi dell'array: 2 28 12 32 Somma: 74
Nel seguente esempio di linguaggio C, se effettuiamo la conversione esplicita, non verranno mostrati alcun errore.
Di seguito è riportata la sintassi per allocare memoria utilizzando il linguaggio C++.
pointer_name = (cast-type*) malloc(size);
qui,
pointer_name-qualsiasi nome per il puntatore.
cast- type - tipo di dati del memoria da allocare tramite conversione forzatamalloc()
.
Dimensionedimensione della memoria allocata in byte.
Di seguito è riportato:malloc()
Esempio di linguaggio C++.
#include <iostream> using namespace std; int main() { int n = 4, i, *p, s = 0; p = (int*)malloc(n * sizeof(int)); if(p == NULL) { cout << "\nErrore! Memoria non allocata."; exit(0); } cout << "\nInserisci gli elementi dell'array: "; for(i = 0; i < n; ++i) { cin >> (p + i); s += *(p + i); } cout << "\nSomma: ", s; return 0; }
Risultato di output
Inserisci gli elementi dell'array: 28 65 3 8 Somma: 104
Nel seguente esempio di linguaggio C++, se non effettuiamo la conversione esplicita, il programma mostrerà l'errore seguente.
error: conversione non valida da 'void*' a 'int*' [-fpermissive] p = malloc(n * sizeof(int));