ducdohuunguyen Ответов: 1

Увеличьте указатель и дайте значение


Я хочу придать значение инкрементированному указателю.
Итак, у меня есть следующий код:

#include<iostream>
using namespace std;

int main()
{
	int *ptr,number1=1;
	ptr=&number1;
	ptr++;
	*ptr=3;
	cout<<*ptr;
}



Что я уже пробовал:

Я ожидаю, что результат будет 3, но вместо этого программа перестает работать и завершается. Что не так с моим кодом?

Philippe Mori

Этот код имеет неопределенное поведение. По сути, вы не должны разыменовывать указатель, который не указывает на выделенную память. Итак, чтобы ваш код работал number1 это должен быть массив, состоящий как минимум из 2 элементов (так как вы увеличиваете указатель один раз).

1 Ответов

Рейтинг:
4

Patrice T

Похоже, ты путаешься с указателями.
Чтобы изучить основы C/C++, прочтите эту книгу
https://hassanolity.files.wordpress.com/2013/11/the_c_programming_language_2.pdf[^]
http://www.ime.usp.br/~ПФ/Керниган-Ритчи/с-Программирование-электронные книги.формат PDF[^]
Язык программирования Си - Википедия, свободная энциклопедия[^]

Вы должны научиться использовать отладчик как можно скорее. Вместо того чтобы гадать, что делает ваш код, пришло время увидеть, как он выполняется, и убедиться, что он делает то, что вы ожидаете.

Отладчик позволяет вам следить за выполнением строка за строкой, проверять переменные, и вы увидите, что есть точка, в которой он перестает делать то, что вы ожидаете.
Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]