| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > *pName and pName |
| Автор: GRON 26.12.2003, 15:28 | ||||
| Народ, просьба объяснить: Если передать функции массив, допустим, f("Alpha"); , то
Такой код выводит тот же массив: Alpha А такой
Выводит только А, т.е. только первую букву. Почему? |
| Автор: shedon 26.12.2003, 15:36 | ||
| Потому, что ты передаёшь указатель на первый символ массива. т.е. ты передаёшь указатель на указатель(двойной указатель) тоже
|
| Автор: GRON 26.12.2003, 15:41 | ||
А почему этот тогда выводит весь массив разом? |
| Автор: Anklav 26.12.2003, 18:30 | ||
Наверно эта функция порегружена для char * на вывод строки. |
| Автор: GRON 26.12.2003, 22:32 |
| Все, я окончательно сформулировал вопрос: Почему при запросе вывода ( cout << pName; ) переменной имеющей тип char*, выводится переменная типа char, да еще не одна, а сразу несколько? AnklavСорри, но видимо, я настолько еще новичок - объясни, чем unsigned отличается от signed? Спасибо всем. |
| Автор: <Spawn> 27.12.2003, 07:53 | ||
Беззнаковый и знаковый соответственно типы. Т.е. signed char может принимать значения от - 128 до 127, а unsigned char от 0 до 255. |
| Автор: <Spawn> 27.12.2003, 08:11 | ||||
Потому что так, видимо, реализована работата метода класса. Так как char * это null-terminated стринг, то скорее всего, делается это в методе примерно так(абстрактно):
|
| Автор: GRON 27.12.2003, 17:19 |
| Я так и подумал, т.е. он начинает выводить все подряд, что следует за адресом pName, пока не встретит либо 0, либо ничего. Один только вопрос - чем отличается значения char от -128 до 127 от 0 до 255? Спасибо. |
| Автор: <Spawn> 27.12.2003, 17:38 | ||
практически ни чем. Что то, что другое занимают 1 байт. Но если ты пишешь unsigned то он интерпритируется как отрицательное число, иначе положительное. Как все это понимает компилятор? А очень просто если он "знает", что ты хочешь использовать отрицательные значения, то смотрит старший бит байта и если он равен 1, то число считается отрицательным. Например: 0000 0010 : 2 1000 0010 : -126 |
| Автор: RomaX 27.12.2003, 17:44 | ||
Для знаковых чисел старший бит интерпретируется как знак: единица - как минус, ноль - как плюс. Счет идет 127 - 01111110 128 - 01111111 0 -10000000 -1 - 10000001 -2 - 10000010 и т.д. У беззнаковых же старший бит не интерпретируется как знаковый, т.е. за 128 идет 129.[QUOTE] |