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

Смежные вопросы