![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| GRON |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 21.11.2003 Репутация: нет Всего: нет |
Народ, просьба объяснить:
Если передать функции массив, допустим, f("Alpha"); , то
Такой код выводит тот же массив: Alpha А такой
Выводит только А, т.е. только первую букву. Почему? Это сообщение отредактировал(а) GRON - 26.12.2003, 15:29 |
||||
|
|||||
| shedon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1209 Регистрация: 17.1.2003 Где: Нижнiй Новгородъ Репутация: 4 Всего: 11 |
Потому, что ты передаёшь указатель на первый символ массива. т.е. ты передаёшь указатель на указатель(двойной указатель)
тоже
-------------------- Programming is like sex: One mistake and you have to support it your lifetime |
|||
|
||||
| GRON |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 21.11.2003 Репутация: нет Всего: нет |
А почему этот тогда выводит весь массив разом? |
|||
|
||||
| Anklav |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 9.12.2003 Где: Менск Репутация: нет Всего: 1 |
Наверно эта функция порегружена для char * на вывод строки. |
|||
|
||||
| GRON |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 21.11.2003 Репутация: нет Всего: нет |
Все, я окончательно сформулировал вопрос:
Почему при запросе вывода ( cout << pName; ) переменной имеющей тип char*, выводится переменная типа char, да еще не одна, а сразу несколько? AnklavСорри, но видимо, я настолько еще новичок - объясни, чем unsigned отличается от signed? Спасибо всем. |
|||
|
||||
| <Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: нет Всего: 64 |
Беззнаковый и знаковый соответственно типы. Т.е. signed char может принимать значения от - 128 до 127, а unsigned char от 0 до 255. Это сообщение отредактировал(а) <Spawn> - 27.12.2003, 07:55 -------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
| <Spawn> |
|
||||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: нет Всего: 64 |
Потому что так, видимо, реализована работата метода класса. Так как char * это null-terminated стринг, то скорее всего, делается это в методе примерно так(абстрактно):
-------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
||||
|
|||||
| GRON |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 21.11.2003 Репутация: нет Всего: нет |
Я так и подумал, т.е. он начинает выводить все подряд, что следует за адресом pName, пока не встретит либо 0, либо ничего.
Один только вопрос - чем отличается значения char от -128 до 127 от 0 до 255? Спасибо. |
|||
|
||||
| <Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: нет Всего: 64 |
практически ни чем. Что то, что другое занимают 1 байт. Но если ты пишешь unsigned то он интерпритируется как отрицательное число, иначе положительное. Как все это понимает компилятор? А очень просто если он "знает", что ты хочешь использовать отрицательные значения, то смотрит старший бит байта и если он равен 1, то число считается отрицательным. Например: 0000 0010 : 2 1000 0010 : -126 Это сообщение отредактировал(а) <Spawn> - 27.12.2003, 17:41 -------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
| RomaX |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 25.12.2003 Репутация: нет Всего: нет |
Для знаковых чисел старший бит интерпретируется как знак: единица - как минус, ноль - как плюс. Счет идет 127 - 01111110 128 - 01111111 0 -10000000 -1 - 10000001 -2 - 10000010 и т.д. У беззнаковых же старший бит не интерпретируется как знаковый, т.е. за 128 идет 129.[QUOTE] |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |