vasek |
|
Темы:
48
Сообщения:
11320
Участник с: 17 февраля 2013
|
grayichВиноват, ошибся - копировал и не исправил
Ошибки не исчезают с опытом - они просто умнеют
|
grayich |
|
Темы:
216
Сообщения:
1984
Участник с: 08 января 2009
|
maisvendooвсё равно непонятно по логике указатель должен содержать именно адрес, а в случае char *s, s содержит строку а не адрес |
safocl |
|
Темы:
121
Сообщения:
1570
Участник с: 08 октября 2015
|
maisvendooда спс, тут достаточно допытливо рассказано... |
vasek |
|
Темы:
48
Сообщения:
11320
Участник с: 17 февраля 2013
|
grayichВ данном случае (char *s и char s[]) результат будет тот же самый. С указателями никогда не работал, да и в C чайник, но, насколько понимаю, в случае использования указателя больше возможностей при оперировании с данным параметром..
Ошибки не исчезают с опытом - они просто умнеют
|
grayich |
|
Темы:
216
Сообщения:
1984
Участник с: 08 января 2009
|
vasek, пишут что char *s = "blablabla" является полноценным указателем на анонимный массив с присваиваемым значением но какого тогда printf (s) печатает blablabla , а не адрес как и должен делать указатель |
vasek |
|
Темы:
48
Сообщения:
11320
Участник с: 17 февраля 2013
|
grayichВот что пишут на этот счет (и согласен, меня это тоже смущает и не до конца понимаю ....... просто со строками char принимаю это как аксиому)
Ошибки не исчезают с опытом - они просто умнеют
|
alexandr05 |
|
Темы:
16
Сообщения:
107
Участник с: 16 октября 2011
|
Более простое объяснение можно прочитать в книге Д.Либерти "Освой самостоятельно С++ за 21 день" День 12 стр. 351 (8 издание). Т.е. такого типа данных как массив в С/С++ не существует. Существует выделенная память, размер которой определяется базовым типом данный умноженным на количество элементов в массиве. Квадратные скобки - это оператор индексации (индексирования). Первый элемент (с индексом нуль) и ссылка на массив - это одно и тоже. (Кстати char является int - ом). Массив задается явным образом, т.е. в квадратных скобках указывается количество элементов массива, либо каждый элемент массива инициализируется при формировании массива (в этом случае компилятор сам определяет количество элементов для резервирования памяти). Таким образом, объявить любой массив, например char s1[], а потом присвоить ему значение нельзя. Либо сразу присваиваем литерал, либо указываем размер. |
safocl |
|
Темы:
121
Сообщения:
1570
Участник с: 08 октября 2015
|
grayichну потому чо как я понял анонимный массив... чисто прога знает область памяти выделенную для него. при чем изменение не предусмотрено, ридонли |
safocl |
|
Темы:
121
Сообщения:
1570
Участник с: 08 октября 2015
|
alexandr05как же так, у него жеж всего значения то от -128 до 127... |
alexandr05 |
|
Темы:
16
Сообщения:
107
Участник с: 16 октября 2011
|
И где здесь противоречие? У Б. Страуструпа этот момент подробно освещен. Читать нужно в сужающих преобразованиях. Большее множество может включать в себя меньшее, но не наоборот. А для себя можете скомпилировать простейшую программу, которая принимает со входа char '1', затем присваивает этот символ переменной int -у, затем выводит поочередно, введенный Вами char, int и int - 0x30. |