![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Crafty |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 3.11.2008 Репутация: 2 Всего: 14 |
Только я писал про: Прочитайте еще раз цитату из K&R в моём предыдущем посте, и в осбенности последнюю фразу.
Это одномерный массив указателей на символьные константы, и в этом массиве храняться только адреса на первый элемент символьной константы. Это сообщение отредактировал(а) Crafty - 29.9.2010, 15:00 |
||||
|
|||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Вовсе нет, это совершенно разные вещи. Двумерный массив - это массив, элементами которого являются массивы, причем фиксированной длины. И память эта непрерывна, чего нельзя сказать о массиве указателей. -------------------- ... |
|||
|
||||
| cupper |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 525 Регистрация: 29.11.2006 Репутация: 1 Всего: 1 |
чем массив символов отличается от массива чисел ? (кроме типов элементов char и int)
чем указатель на что либо отличается от указателя на символьную константу ?(кроме того что указательно на символьную константу знает что он указывает на символьную константу) чем символьная константа отличается от константного массива типа char ? (кроме формы объявления) Ответ: ничем. Так в чем разница между тем что сказал я и тем что повторяете вы ? Что такое двумерный массив ? Это массив массивов, тогда чем массив указателей на строки (символьные константы если вам так приятней) отличается от массива int mas[3][4] ? Только тем что последний в памяти храниться последовательно строка за строкой (таким образом к любому элементу массива можно обращаться так *(mas+3*i+j), а char *mas[] = {"aaa", "bbb"}, храниться в разброс (но при этом к любому их его элементов можно обращаться также как и в предыдущем случае mas[i][j] (в случае с указателями *((*(mas+i))+j) из за того что он храниться не в виде последовательности строк) Если вам (может оно и вправду тольк так) приятно называть *mas[] именно только как массив указателей на символьные константы, и ни в коем случае ни двумерный массив (или масив указателей на строки), то давайте называть его так, а то уже второй пост мы спорим о том как я его называю, обходя непосредственно ту проблему на которой сконцентрирован весь топик).
хорошо, не правильно терминологию использовал. PS. тогда остается только один вопрос
и сори за бессмысленный треп. Это сообщение отредактировал(а) cupper - 29.9.2010, 15:35 |
||||||||
|
|||||||||
| Master01 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 22.8.2007 Репутация: 2 Всего: 2 |
вот что написано в "Язык Программирования С++. Спецальное издание." Б. Страуструп. Глава 5.2.2 "Строковые литералы."
"... Строковый литерал можно присвоить переменной типа char*. Это разрешается потому что в предыдущих определениях С и С++ типом строкового литерала был char*. Благодаря такому разрешению миллионы строк кода на С и С++ остаются синтаксически корректными...." строковый литерал - это ваш "test" из предыдущего сообщения. Выходит, что это очередной special case для обеспечения обратной совместимости. Насколько я понял, ошибка в рассуждениях выше в том, что вы считали строковый литерал некой сокращённой формой записи для массивов. Хотя это формально и так, но распространяется только на char, и как справедливо было установленно, к числовым массивам не применимо. Добавлено через 5 минут и 46 секунд это я к тому, что запись char *mas[] есть массив указателей на char, каждому из которых присваивается сроковый литерал. |
|||
|
||||
| cupper |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 525 Регистрация: 29.11.2006 Репутация: 1 Всего: 1 |
Спасибо, я примерно так и думал, хотелось чтоб ктонибудь подтвердил мои догадки. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |