как сопоставить арабское слово с «ташкель»?

На языке программирования B, который был непосредственным предшественником C, указатели и целые числа были свободно взаимозаменяемыми. Система будет вести себя так, как если бы вся память была гигантским массивом. Каждое имя переменной имело связанный с ней глобальный или стековый относительный адрес, для каждого имени переменной единственными вещами, которые должен был отслеживать компилятор, была то, была ли она глобальной или локальной переменной и ее адресом относительно первого глобального или локального переменная.

Учитывая глобальное объявление, подобное i; [не нужно было указывать тип, поскольку все было целым числом / указателем], обрабатывался компилятором как: address_of_i = next_global++; memory[address_of_i] = 0; и оператор вроде i++ будет обрабатываться как: memory[address_of_i] = memory[address_of_i]+1;.

Объявление типа arr[10]; будет обрабатываться как address_of_arr = next_global; memory[next_global] = next_global; next_global += 10;. Обратите внимание, что как только эта декларация была обработана, компилятор мог сразу забыть о arr, являющемся массивом . Операция типа arr[i]=6; будет обрабатываться как memory[memory[address_of_a] + memory[address_of_i]] = 6;. Компилятору все равно, будет ли arr представлять массив и i целым числом, или наоборот. В самом деле, было бы все равно, являются ли они как массивами, так и целыми числами; он отлично сгенерировал бы код, как описано, невзирая на то, будет ли полученное поведение, вероятно, полезным.

Одна из целей языка программирования C была в значительной степени совместима с B. В B имя массива [называемого «вектором» в терминологии B] идентифицировало переменную, содержащую указатель, который изначально был назначен, чтобы указать на первый элемент распределения заданного размера, поэтому, если это имя появилось в списке аргументов для функции функция получит указатель на вектор. Несмотря на то, что C добавил «реальные» типы массивов, имя которых было жестко связано с адресом распределения, а не с переменной указателя, которая первоначально указывала бы на распределение, имея массивы, разлагающиеся на код, созданный указателями, который объявлял массив C-типа одинаковым к B-коду, который объявил вектор, а затем никогда не изменял переменную, содержащую ее адрес.

7
задан Hager Aly 14 June 2014 в 07:06
поделиться