Форум программистов, компьютерный форум CyberForum.ru

странное поведение указателя - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти суммарную площадь равнобедренных треугольников, имеющих равное основание А, но различные длины боковой стороны http://www.cyberforum.ru/cpp-beginners/thread650471.html
Условие задачи: Найти суммарную площадь равнобедренных треугольников, имеющих равное основание А, но различные длины боковой стороны,образующие прогрессию А+1, А+2, А+3,...,А+N Не доходить как реализовать данное условие в программе.
C++ Как создать прогу на С++ Возможно я неправильно вопрос сформулировал. Но вот уже больше года работаю на С++, но так до сих пор и не знаю как мне сделать программу, как все обычные, допустим как driver genius. Т.е. я в студии пишу код, и как мне сделать екзешник проги? Надеюсь вы понимаете о чем я:) В интернете искал, так ничего и не нашел. http://www.cyberforum.ru/cpp-beginners/thread650465.html
C++ Подключение Dll библиотеки, вылетает программа
Добрый вечер!Помогите пожалуйста разобраться в чем проблема.. Задача: из библиотеки winmm.dll вызвать фукцию PlaySound()(это работает), после воспроизведение должна выводится сума двух чисел, функция суммы должна находится в созданной dll библиотеке, и вызываться с главного консольного проекта(компоновка явная). Текст программы: библиотека: bibl.h #include <windows.h> #include <tchar.h>...
Что дальше? C++
Здравствуйте.Я давно уже изучаю С++,изучил уже ООП,STL и т.д. все что касается консольных приложений.Что делать дальше?Хочу научится создавать полноценные приложения,работающие с графическим интерфейсом.Думал начать изучать Qt или WinAPI,что лучше?Посоветуйте какую-нибудь литературу.
C++ Создание динамической матрицы http://www.cyberforum.ru/cpp-beginners/thread650419.html
никак не могу понять в чем ошибка #include <stdio.h> void matrix(int n) { int** arr = new int*; for(int i = 0; i<n;i++) { arr = new int ;
C++ операции для работы с битами Есть ли в Visual C++ операторы выполняющие операции для работы с битами(сдвиг влево, сдвиг вправо, поразрядная инверсия, поразрядное ИЛИ, поразрядное И, поразрядное исключающее ИЛИ) или надо как-то эти методы в ручную прописывать??? подробнее

Показать сообщение отдельно
PSIAlt
 Аватар для PSIAlt
86 / 86 / 8
Регистрация: 19.06.2012
Сообщений: 245
12.09.2012, 10:33     странное поведение указателя
Строки char* кончаются когда встречается символ с кодом 0. Когда ты выделяешь память (new, malloc) - выданная память не инициализирована. То есть в ней может находится что угодно, обычно это остатки от предыдущих приложений или остатки твоих собственных обьектов (которые ты удалил ранее). Так вот, если нужно просто создать пустую строку делай так:
C++
1
2
3
4
char * line3 = new char[30];
line3[0] = 0; // Ставим знак окончания строки прямо в начале
// ...
delete []line3;
Получается в line3 лежит последовательность в которой первый же символ идет с кодом 0. Соответвенно strlen(line3) будет == 0, что мы обчно и называем "пустой строкой"
З.Ы. Не забывай delete[] для обьектов которым ты делал new[]. В данном случае (прога почти сразу выходит) - пофигу, но вообще так оставлять нельзя.
 
Текущее время: 13:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru