2016-06-09 100 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