【问题标题】:Need help whit c++ pointers [closed]需要 C++ 指针方面的帮助 [关闭]
【发布时间】:2016-06-09 17:28:42
【问题描述】:

我正在研究 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;
}

【问题讨论】:

  • 这段代码的主要问题是它没有正确缩进,而且完全不可读。因此,通常想帮助您的大多数人都会忽略这个问题,因为您甚至没有尽最小的努力使您的代码可读。
  • 幸运的是,像我这样的人通常会很快解决这个问题......
  • 欢迎来到 Stack Overflow!听起来您可能需要学习如何使用调试器来逐步执行代码。使用好的调试器,您可以逐行执行您的程序,并查看它与您期望的偏差在哪里。如果您要进行任何编程,这是必不可少的工具。进一步阅读:How to debug small programs
  • 首先学习 C 是一种不同的语言,具有一些不同的语义。不要垃圾标签。
  • char *x = new char[10]; x = "idea"; 是内存泄漏。 (也不应该编译(const))。

标签: c++ pointers


【解决方案1】:

在此关闭之前,x="idea"; 是您的问题所在。您丢弃缓冲区并将其指向一个常量值,然后尝试分配给它,这几乎总是非法的(应该总是非法的,但显然它正在为您编译......)。

【讨论】:

  • 非常感谢问题在于,我只是在学习:)
猜你喜欢
  • 1970-01-01
  • 2011-03-17
  • 1970-01-01
  • 2011-09-15
  • 2014-08-31
  • 1970-01-01
  • 2014-06-20
  • 2021-10-13
  • 2010-09-08
相关资源
最近更新 更多