Malloc Speicher reservieren problem
-
Hallo,
ich nutze Visualstudio 2012
und habe derzeit das Problem, dass der Compiler über malloc meckert:#include <stdio.h> #include <iostream> #pragma warning(disable: 4996) using namespace std; int main(){ int zeile=0, spalte=0; printf("Zeile "); scanf("%i",&zeile); printf("Spalte "); scanf("%i",&spalte); int *matrix; matrix = malloc(zeile * sizeof(int)); system("PAUSE"); }
Kringel unter = Zeichen mit Fehlerangabe:
Fehler 1 error C2440: '=': 'void *' kann nicht in 'int *' konvertiert werdenWas mache ich falsch?
Habe auch ein Beispiel Galileo openbook C++ verwendet, ohne Erfolg.
-
Da fehlt der nötige Cast. Aber in C++ verwendet man sowieso new und nicht malloc()...
-
Programm ist in C.
Die Header sind vom alten c++ Programm, die keine Auswirkung auf meinem Programm sein sollten.
-
Du verwechselst C++ mit C.
Zeile 2,3 und 4 sind C++. Der Rest ist C.
In C ist ein
void
-Zeiger (void*
) in jeden anderen Zeiger konvertierbar.
In C++ muss man dafür extra einen Cast angeben.Lösche Zeile 2 bis 4, füge eine neue Zeile mit
#include <stdlib.h>
(für malloc) ein und stelle den Compiler auf C um.
Evtl reicht es dafür aus, den Code mit der Endung .c abzuspeichern und ins Projekt zu übernehmen.
-
dslpro schrieb:
Programm ist in C.
Die Header sind vom alten c++ Programm, die keine Auswirkung auf meinem Programm sein sollten.Das Programm ist weder C noch C++. Wenn du ein C Programm haben willst, dann schreib ein C Programm und kompilier es mit einem C Compiler. Wenn du ein C++ Programm haben willst, dann schreib ein C++ Programm und kompilier es mit einem C++ Compiler. So geht's jedenfalls nicht, wie du ja bereits gemerkt hast...
-
MSVC zeigt das übrigens selbst dann als Fehler an, wenn du C programmierst. Da die IDE auf C++ ausgelegt ist. Es sollte aber ohne den Cast funktionieren, wenn du es (mit dem C-Compiler) übersetzt.
Habe auch ein Beispiel Galileo openbook C++ verwendet, ohne Erfolg.
Einmalfür Benutzung von Galileo openbook, das zweite
für Benutzung eines C++-Buchs, wenn man C machen möchte. Die Sprachen sind zu verschieden, um da Lehren zu übertragen. Und das dieses spezielle Buch anscheinend nichts taugt, sieht man da dran, dass es ja anscheinend C/C++-Mischmasch lehrt, obwohl C++ drauf steht.
dot schrieb:
Da fehlt der nötige Cast. Aber in C++ verwendet man sowieso
newvector und nicht malloc()...FTFY