Форум программистов, компьютерный форум, киберфорум
Наши страницы

Смысл "+1" - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как отключить инлайн в MSVS2008? http://www.cyberforum.ru/cpp-beginners/thread933063.html
Такое дело. Я сейчас разбираюсь в дизассемблированном коде простых программ, а Visual Studio мешает мне в этом занятии. Точнее, это считается "помощью", но мне не это нужно. Короче, она инлайнит...
C++ Вызов метода, возвращающего int значение Приветствую. Начинаю изучать C++, с банальных задач, так вот никак не могу понять, ну почему получаю в данном случае ошибку "error C3861: 'SearchWin': identifier not found" #include "stdafx.h"... http://www.cyberforum.ru/cpp-beginners/thread933051.html
Надо применять delete [] или нет C++
Привет. Читаю книгу Прата и выполняю задания. Гл.8 Зд.4: Мое решение: #define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; #include <cstring> //для strlen(), strcpy() ...
C++ Подскажите справку по языку
Доброго дня! Простите, если я баран и спрашиваю банальные вещи или наборот несуществующие. Есть ли такой электроный справочник, что б я вписал туда любой элемент программы и он мне оп- развёрнутае...
C++ Сортировать одномерный массив вещественных чисел http://www.cyberforum.ru/cpp-beginners/thread933009.html
Помогите написать функцию, кто знает! Условие: допускается использование любых видов функций. Разработать функцию, которая осуществляет сортировку одномерного массива вещественных чисел в...
C++ Удалить из предложения слова с комбинацией символов Помогите написать функцию! Условие: допускается использование любых видов функций. Разработать функцию, которая удаляет из предложения все слова, содержащие заданную комбинацию символов. Ввести... подробнее

Показать сообщение отдельно
VLK
194 / 163 / 12
Регистрация: 05.05.2013
Сообщений: 1,225
03.08.2013, 21:10
Цитата Сообщение от Erjay Посмотреть сообщение
Почему не такой?
потому что все закончится печально

Если ты создал динамический массив и выделил под него память, а именно это сделано в этой строчке:
C++
1
itsString = new char [itsLen+1];
т.е. допустим itsLen = 100, в итоге эта строчка превращается у тебя в:
C++
1
itsString = new char [100+1];
а потом:
C++
1
itsString = new char [101];
то это 101 нельзя изменить (нет может быть можно но, тебе пока рано лезть в эти манипуляции)

а запись:
C++
1
itsString[itsLen+1] = '\0';
будет иметь вид:
C++
1
itsString[101+1] = '\0';
а потом:
C++
1
itsString[102] = '\0';
но массив то имеет 101 элемент, а ты пытаешься в 102 элемент записать что то (в элемент, который не существует), тут даже 101 не существует (т.к. массив начинается с 0, а не с 1).

Еще для понимания:

C++
1
itsString = new char [itsLen+1];
это создание и выделение памяти под массив, а
C++
1
itsString[itsLen+1] = '\0';
это запись в массив, в элемент номер itsLen+1 значения '\0'

точно так же как:

C++
1
2
int var; // аналог itsString = new char [itsLen+1]
var = 5; // аналог itsString[itsLen+1] = '\0'
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru