English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In the C language, void pointers are implicitly converted to object pointer types. This functionmalloc()
In C89the standard returns void *. In earlier versions of Cmalloc()
returns char *. In C ++By default in the languagemalloc()
Returns an int value. Therefore, use explicit conversion to convert the pointer to an object pointer.
Hier ist die Syntax, um Speicher in der Sprache C zu zuweisen.
pointer_name = malloc(size);
Hier,
pointer_name-geben Sie jedem Zeiger einen Namen.
Größe-Die Größe des zuweisenden Speichers in Bytes.
Hier istmalloc()
C-Sprachbeispiel.
#include <stdio.h> #include <stdlib.h> int main() { int n = 4, i, *p, s = 0; p = malloc(n * sizeof(int)); if(p == NULL) { printf("\nFehler! Speicher nicht zugewiesen."); exit(0); } printf("\nGeben Sie die Elemente des Arrays ein : "); for(i = 0; i < n; ++i) { scanf("%d", p + i); s += *(p + i); } printf("\nSumme : %d", s); return 0; }
Ausgaberesultat
Geben Sie die Elemente des Arrays ein : 2 28 12 32 Summe : 74
In der obigen C-Sprachbeispiel, wenn wir eine explizite Zwangsweise Konvertierung durchführen, wird kein Fehler angezeigt.
Hier ist ein Beispiel für die Verwendung von C ++Syntax, um Speicher in der Sprache zu zuweisen.
pointer_name = (cast-type*) malloc(size);
Hier,
pointer_name-geben Sie jedem Zeiger einen Namen.
cast- type-Um die Datenart zuzuweisen, die durch Zwangsweise Konvertierung zugewiesener Speicher befreit wirdmalloc()
.
Größe-Die Größe des zuweisenden Speichers in Bytes.
Hier istmalloc()
C ++Sprachbeispiel.
#include <iostream> using namespace std; int main() { int n = 4, i, *p, s = 0; p = (int *)malloc(n * sizeof(int)); if(p == NULL) { cout << "\nFehler! Speicher nicht zugewiesen."; exit(0); } cout << "\nGeben Sie die Elemente des Arrays ein : "; for(i = 0; i < n; ++i) { cin >> (p + i); s += *(p + i); } cout << "\nSumme : " << s; return 0; }
Ausgaberesultat
Geben Sie die Elemente des Arrays ein : 28 65 3 8 Summe : 104
In der obigen C ++In der Sprachbeispiel, wenn wir keine explizite Konvertierung durchführen, zeigt das Programm folgenden Fehler an.
error: invalid conversion from ‘void*’ to ‘int*’ [-fpermissive] p = malloc(n * sizeof(int));