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

Почему выводится весь массив - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Редактирование платного длл чита ( для варфейс ) http://www.cyberforum.ru/cpp-beginners/thread669316.html
Здравствуйте ! Передо мной возникла весьма не легкая задача, друг купил платную версию чита для варфейс (валхак) *.dll* Перед передачей самого чита парень что *его скидывал* скинул программу...
C++ Компиляция программы из файла cpp через командную строку Допустим я написал этот код в стандартном виндовском блокноте #include <iostream> int main(){ std::cout << "Hello, world!"; system("pause"); return 0; http://www.cyberforum.ru/cpp-beginners/thread669307.html
Вычислить сумму ряда C++
Напишите программу, которая принимает с клавиатуры число N и выводит на экран все числа от N до -N. Например, если введено число 3, то на экране должны появиться числа 3, 2, 1, 0, -1, -2, -3. ...
C++ Определить, могут ли числа быть сторонами треугольника
Заданы числа a, b, c. Определить, могут ли они быть сторонами треугольника, и если да, то определить его тип: равносторонний, равнобедренный, разносторонний. (код нужен на си++):cry:
C++ Вычисление значения выражения http://www.cyberforum.ru/cpp-beginners/thread669245.html
Только начал осваивать с++,практически 0 уровень,дали решить задачу,условие: B=sqrt(10*(x^(1/3) + x^(y+2)) * (arcsin^2(z) - |x-y|) нужно чтобы было 3 Edit'a в каждый из которых вводится x,y и z,...
C++ так и не нашли ошибку, циклы и условия Программа должна проверить введенную строчку на соответствие слову как паролю.Условия Не меньше 8 символов, содержание латинских букв и цифр. код прилагается. не работает, помогите ... подробнее

Показать сообщение отдельно
Snaiffer
2 / 2 / 0
Регистрация: 13.03.2011
Сообщений: 18
12.10.2012, 11:25
Цитата Сообщение от Roman_G Посмотреть сообщение
Т.е. "в принципе" char* это не указатель, а в большей степени строковый тип данных С?
Нет, char* это именно указатель. Просто здесь имеет место особенность в том как cout его обрабатывает.
cout начинает выводить значения ячеек памяти с того адреса который ты ему передал в "p" до символа '\0'. Имменно поэтому и получается так что он выводит всю твою строку.

Для наглядности попробуй сделать вот так:
C++
1
2
3
4
char ch = 'W';
char str[] = "hello";
char *pch = &ch;
cout << pch << endl;
В результате ты получишь "Whello". Т.е. сначала у нас выделяется память под ch и в ячейку памяти записывается символ 'W', затем выделяется память под массив символов "hello" только тут компилятор еще добавляет к этому массиву и символ '\0'.
В итоге у нас в памяти содержится:
______________________
| W | h | e | l | l | o | \0 |

далее запускается cout и считывает все до '\0'
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru