2016-06-09 91 views
-7

我正在研究C++的語義和語法,我真的不知道這個代碼的問題是什麼,它編譯但停止工作。我會讚揚你的幫助,謝謝。需要幫助惠特c + +指針

#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

此代碼的主要問題是它沒有正確縮進,並且完全不可讀。因此,大多數通常希望幫助你的人都會通過這個問題,因爲你甚至沒有花費最少的精力來讓你的代碼可讀。 –

+0

幸運的是,有像我這樣的人和其他人通常會很快修復... –

+6

歡迎來到Stack Overflow!這聽起來像你可能需要學習如何使用調試器來遍歷代碼。使用一個好的調試器,您可以逐行執行您的程序,並查看它與您期望的偏離的位置。如果你打算做任何編程,這是一個重要的工具。進一步閱讀:** [如何調試小程序](http://ericlippert.com/2014/03/05/how-to-debug-small-programs/)** – NathanOliver

回答

0

在此結束之前,x="idea";是您的問題所在。你扔掉你的緩衝區並將它指向一個常量值,然後嘗試賦值給它,它幾乎總是非法的(應該總是非法的,但顯然它正在爲你編譯......)。

+0

非常感謝問題是,我只是在學習:) – Juampi