|
Модераторы: bsa |
|
TarasProger |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 104 Регистрация: 5.8.2015 Репутация: нет Всего: нет |
Количество символов можно хранить в двух первых байтах, и в четырёх, и в восьми, и даже в sizeof(char*) первых байт, чтоб уж точно хватило на любую возможную строку. Проблема здесь другая: 1. Если на одной платформе будет количество символов в 4-х первых байтах, а на другой - в восьми, и такая строка будет как есть сохранена в бинарный файл, или передана по сети, то код первого символа точно прочитается не правильно, а может быть не правильно интерпретируется и количество символов. 2. Если на одной платформе один порядкок байт, а на другой - совсем другой, то не правильно интерпретируется количество символов. Терминальный же ноль в этом плане универсален. И что неудобного в структуре
Добавлено через 7 минут и 40 секунд Вот только вызов функции, возможно на языке ассемблера написанной, - не показатель. А попробуйте помимо функций и асм-вставок вызхвать программное прерываение, или присвоить значение регистру процессора. Или соверешить переход в зависимости не от результата сравнения, а от флага результата арифметической операции, например, в случае переполнения. На c нельзя делать вообще ничего, что можно делать на языке ассемблера. А так то свой memcpy можно написать и для паскаля, и для бейсика, и для любого другого языка, допускающего побочные эффекты подпрограмм, даже стекового. Добавлено через 14 минут и 50 секунд И это на фоне утверждения о том, что на c якобы можно делать всё тоже самое. Эффектичность чистого c кода, кстати, обязана быть максимально возможной, это было главное требование ТЗ на язык. Максимальная эффктивность кода + возможность делать всё тоже самое, что и на языке ассемблера = на ассемблере нельзя ничего делать эффективнее, в лучшем случае столько же эффективно, но не эффективнее. Но почему то c нуждается в поддержке вставок на языке ассемблера. |
|||
|
||||
TarasProger |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 104 Регистрация: 5.8.2015 Репутация: нет Всего: нет |
Я первые месяца полтора не то что изменить что либо в чужой программе, а даже понять в них хоть что то не мог, а мог как раз только писать сам. Потом со знанием алгоритмов и их классов пришло и умение читать чужие программы. Умение же что то менять в чужих программах пришло только лет через 7 с умением абстрагироваться от конркретного стиля, а раньше я мог только прочитать, полностью переписать и тогда уже дополнять. |
|||
|
||||
TarasProger |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 104 Регистрация: 5.8.2015 Репутация: нет Всего: нет |
1. Константные, в этом случае и количество элементов массива - константа, и сами элементы - константы. 2. Статические, в этом случае количество элементов массива - константа, но сами элементы - переменные. Весь массив при этом может лежать на стеке, если это не противорчит ни стандарту языка, ни спецификации конкретного диалекта, тогда при слишком большой глубине рекурсии рекурсивной функции с локальным массивом может происходить переполнение. В программах на Object Pascal я данное явление наблюдал дважды. 3. Динамические, тогда и количество элементов - переменная, и сами элементы - переменные. 4. Разреженные, тогда количество фактически хранимых элементов может быть меньше диапазона индексов. 5. Логические, каждый такой массив есть массив, номинально состоящий из всех элементов разреженного массива, количество элементов логического массива соответствует диапазону элементов разреженного массива. В принципе можно считать, что логический массив есть представление интерфейса разреженного массива. 6. Физические, это вообще не обязательно массивы, физический массив есть контейнер, содержащий все фактичеки хранимые элементы разреженного массива. Можно считать, что физический массив есть контейнер, на котором реализован разреженный массив, но без собственно реализации операций, отвечающих за разрежение. Физический массив может быть стаческим, или динамическим массивом, линейным или кольцевым списком (но не очередью, или стеком), массивом линейных или кольцевых списков (но не очередей, или стеков), деревом массивом деревьев, линейным или кольцевым списком (но не очередей, или стеков) деревьев деревом массивов, деревом линейных или кольцевых списков (но не очередей, или стеков) и много чем ещё, сколь угодно экзотическим. Но это обязательно контейнер и он обязательно допускает неразрушающее произвольное чтение элемента. Очевидно, что разреженные и логические массивы явяются динамическими. Только константный массив целиком - константа, любой другой массив целиком - переменная. Но хотя массив - тоже переменная, но особая. В оличие от скалярных переменных, имеющих одно значение каждая, и струкутр, содержащих каэжая несколько переменных, чьи значения складываются в комплексное, но всёж одно значение всей структуры, массив вообще не имеет единого значения, весь массив имеет как раз только множество значений всех своих элементов и эти значения не складываются в нечто цельное. Это не сложная переменная, а перменная-контейнер. И термин "статический" в случае массива имеет иное значение, относящееся не к памяти, в которой он хранится, а к количеству элементов. Это сообщение отредактировал(а) TarasProger - 14.8.2015, 09:48 |
|||
|
||||
TarasProger |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 104 Регистрация: 5.8.2015 Репутация: нет Всего: нет |
Computer от английского to compute - вычислять. Значит вычислитель. А реагирование на кнопки - это ещё не вычисление, первый копьютер - это вообще арифмометр, второй - калькулятор. |
|||
|
||||
TarasProger |
|
||||
Шустрый Профиль Группа: Участник Сообщений: 104 Регистрация: 5.8.2015 Репутация: нет Всего: нет |
Процелура и функция различаются способом возврата значения. Если через имя самой подпрограммы - это функция, иначе - процедура.
|
||||
|
|||||
TarasProger |
|
||||
Шустрый Профиль Группа: Участник Сообщений: 104 Регистрация: 5.8.2015 Репутация: нет Всего: нет |
1. Переменная, хранящая адрес другой переменной. Возможно другого указателя. 2. Константа, хранящая адрес переменной. Возможно другого указателя. 3. Переменная, хранящая адрес константы. Возможно другого указателя. 4. Константа, хранящая адерес другой константы. Возможно другого указателя. 5. Переменная, хранящая адрес функции. 6. Константа, хранящая адрес функции. Указатель, хранящий адрес другого указателя, называется кратным указателем. Указатель, хранящий адерс другого указателя, в котором уже харнится адрес не указателья, называется двойным указателем. Указатель, хранящий адерс другого указателя, в котором опять хрантся адрес другого указателя, в котором уже харнится адрес не указателья, называется тройным указателем. Кратный - собирательное название. Кратность указателя - это количество указателей, включая данный, адреса которых нужны, чтоб по цепочке добраться до не указателя. Здесь:
Добавлено через 11 минут и 12 секунд Вот как раз параметры ссылочных типов - это на самом деле такие константные указатели, которые не надо разыменовывать. Ни сайзоф, ни взятие адреса этого не покажут, так как настоящая, но временная и безымянная ссылка получается при разыменовании указателья, а параметр ссылочного типа при каждом использовании разыменуется по умолчанию. Но информацию о том, где переменная лежит, надо ведь как то в функцию передать и другого способа кроме указателя для этого на низком уровне нет. Добавлено через 14 минут и 47 секунд Эта ссылка ближе как раз к переменной, такая ссылка - это просто дублирующая запись с тем же адресом в таблице переменных компилятора. Ничего общего с указателем, хранящим адрес на этапе исполнения, она не имеет. |
||||
|
|||||
TarasProger |
|
||||||||
Шустрый Профиль Группа: Участник Сообщений: 104 Регистрация: 5.8.2015 Репутация: нет Всего: нет |
Есть, причём, огромная. Декларация указателя и приведение к указательному типу.
Добавлено через 14 минут и 29 секунд
1. По указателю. 2. Вычислив адрес элемента по адерсу всего массива и индексу элемента. Но если
|
||||||||
|
|||||||||
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |