Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2008, 12:41   #1
CESHNIK
 
Регистрация: 19.02.2008
Сообщений: 5
По умолчанию Указатель n на m

Не могу разобраться с указателями.Дан указатель n на m.Значение m и n можно задать.И с увеличением значения n увеличивается значение m .В конце выводит оба значения на экран.Вот так выглядит моя программа
Код:
#include <iostream>
#include <stdlib.h>


using namespace std;

int main()
{
char* n;
int m,k,l,p;
*n=m;
cin >>n;
cin >>m;
cin >>k;
for(l=0;l<k;l++)
{
n++;
}
cout <<n<< endl;
cout <<m<< endl;
cin >>p;
}
При запуске выдает отчёт"Обнаружена ошибка".Что делать?
CESHNIK вне форума Ответить с цитированием
Старый 05.03.2008, 13:29   #2
Sota
Let's keep talking
Форумчанин Подтвердите свой е-майл
 
Аватар для Sota
 
Регистрация: 02.07.2007
Сообщений: 217
По умолчанию

добавь return 0; в конец кода главной функции. Тогда программа должна от компилироваться. И ещё, если не поможет, ты скажи точно какое сообщение об ошибке у тебя появляется.
Лучше С++, чем ++С...
Sota вне форума Ответить с цитированием
Старый 05.03.2008, 14:03   #3
Alek86
Форумчанин
 
Регистрация: 25.09.2007
Сообщений: 189
По умолчанию

Код:
cin >>n;
ты в указатель записываешь?

Код:
char* n;  
//...
*n=m;
вообще неясно, что ты хочешь
Код:
char* n = new char;
*n=static_cast<char>(m);
?

>> добавь return 0;
не необходимо
Alek86 вне форума Ответить с цитированием
Старый 05.03.2008, 15:17   #4
Sota
Let's keep talking
Форумчанин Подтвердите свой е-майл
 
Аватар для Sota
 
Регистрация: 02.07.2007
Сообщений: 217
По умолчанию

>> добавь return 0;
не необходимо - ну вообще то да)))
И по моему программа неверно написана.
Лучше С++, чем ++С...
Sota вне форума Ответить с цитированием
Старый 05.03.2008, 16:04   #5
alexx777
Пользователь
 
Регистрация: 20.02.2008
Сообщений: 75
По умолчанию

Строка 12: *n=m;
Ты записываешь значение переменной m, которая не инициализирована и содержит в себе произвольное число. Более того ты используешь указатель, который не инициализирован каким-либо адресом. Вот в этом месте и появляется ошибка времени выполнения.

Если тебе нужно создать указатель, ссылающийся на переменную m, пиши:
Код:
 int m,k,l,p;
 int* n;
 n = &m;
Строка 10: char* n;
Если указатель n должен указывать на переменную m, обьявленную как int, то почему ты используешь указатель на тип char?

Строка 18: n++;
Ты инкрементируешь адрес, хранящийся в указателе, а не значение m. Чтобы увеличить значение m через указатель n нужно записать так:

(*n)++;
alexx777 вне форума Ответить с цитированием
Старый 05.03.2008, 23:50   #6
ag-moscow
Пользователь
 
Аватар для ag-moscow
 
Регистрация: 24.02.2008
Сообщений: 13
По умолчанию

Строка cin >> n вообще недопустима. В самом критичном случае может случится краш системы.
Кстати скобки здесь
Цитата:
(*n)++;
не обязательны
printf ("Hello, World!"), fflush (stdout);
std::cout << std::endl;
ag-moscow вне форума Ответить с цитированием
Старый 06.03.2008, 10:57   #7
Alek86
Форумчанин
 
Регистрация: 25.09.2007
Сообщений: 189
По умолчанию

ну, о скобках не надо - не стоит учить человека писать на брэйнфаке
пусть в таких случаях ставит
Alek86 вне форума Ответить с цитированием
Старый 07.03.2008, 23:35   #8
ag-moscow
Пользователь
 
Аватар для ag-moscow
 
Регистрация: 24.02.2008
Сообщений: 13
По умолчанию

Твоими бы устами... хуже когда пол часа сидишь и втыкаешь что делает строка
printf ("Hello, World!"), fflush (stdout);
std::cout << std::endl;
ag-moscow вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Зафиксировать указатель в таблице БД Avalonix БД в Delphi 1 04.06.2008 17:19
указатель мыши автоматически должен совершать клик по заданному месту на экране, через промежуток времени Deefrost Qt и кроссплатформенное программирование С/С++ 5 16.05.2008 20:25
Как передать указатель в процедуру??? kate4ka Общие вопросы Delphi 1 17.03.2008 12:49
Не создается указатель на vector! mahsus Общие вопросы C/C++ 7 11.01.2008 16:07
Вернут указатель на базовый класс Crucian Общие вопросы C/C++ 2 08.11.2007 18:10