2016-06-09 15 views
-7

Ich studiere über C++ Semantik und Syntax, ich weiß wirklich nicht, was ist das Problem mit diesem Code, es kompilieren, aber nicht mehr zu arbeiten. Ich schätze deine Hilfe, danke.Brauchen Sie Hilfe Whit C++ Zeiger

#include <iostream> 
#include <string.h> 

using namespace std; 

char* func(char* M) 
{ 
    int initval = 2; 
    char *x= new char[10]; 
    x="idea"; 
    strcpy(x, M+initval); 
    return x; 
} 

int main() 
{ 
    char* x; 
    char s[10]= "alguna"; 
    x= func(s); 
    cout << *x << endl; 
    return 0; 
} 
+2

Das Hauptproblem mit diesem Code ist, dass es nicht korrekt eingerückt ist und vollständig nicht lesbar ist. Daher würden die meisten Leute, die Ihnen normalerweise helfen möchten, diese Frage weitergeben, da Sie nicht einmal den geringsten Aufwand betrieben haben, um Ihren Code lesbar zu machen. –

+0

Glücklicherweise gibt es Menschen wie mich und andere, die das normalerweise schnell beheben werden ... –

+6

Willkommen bei Stack Overflow! Es klingt, als müssten Sie lernen, wie Sie einen Debugger verwenden, um durch Ihren Code zu gehen. Mit einem guten Debugger können Sie Ihr Programm Zeile für Zeile ausführen und sehen, wo es von dem, was Sie erwarten, abweicht. Dies ist ein essentielles Werkzeug, wenn Sie programmieren wollen. Weiterführende Literatur: ** [Wie kleine Programme zu debuggen] (http://ericlippert.com/2014/03/05/how-to-debug-small-programs/) ** – NathanOliver

Antwort

0

Vor diesem geschlossen wird, die x="idea"; ist, wo Ihr Problem liegt. Sie werfen Ihren Puffer weg und zeigen ihn auf einen konstanten Wert, dann versuchen Sie ihm zuzuordnen, was fast immer illegal ist (sollte immer illegal sein, aber anscheinend kompiliert es für Sie ...).

+0

Vielen Dank das Problem war, dass ich gerade lerne :) – Juampi