Существует некоторая дискуссия об использовании термина "передача ссылкой" в JavaScript здесь , но отвечать на Ваш вопрос:
объект А автоматически передается ссылкой без потребности конкретно указать это
(От упомянутой выше статьи.)
В C вы можете выполнять арифметические операции с символами, используя их коды символов. Таким образом, это гарантирует, что у вас есть цифра, выясняет, что это за цифра (измеряя ее отличие от нуля), а затем увеличивает счетчик в соответствующей позиции в массиве. Когда это будет сделано, ndigit [0]
будет содержать количество вхождений '0'
, ndigit [1]
будет содержать количество вхождений ] '1'
и так далее.
Символ 0 отличается от числа 0.
В ASCII символ «0» находится в позиции 48 . Стандарт гарантирует, что в кодировке символов числа должны быть последовательными (я не знаю, где в стандарте это сказано). То есть, как 1 следует после 0, так и «1» будет после «0». Поэтому, если вы ввели «0» и хотите получить 0, вычтите из него «0». «1» минус «0» будет иметь разницу в 1. И так далее.
Создает гистограмму символов 0-9. «c- '0'» превращает значение из getchar () в целое число, которое действует как индекс для массива. Этот индекс соответствует цифрам 0-9. Затем он увеличивает местоположение этого массива. Таким образом, после завершения работы массив состоит из повторений символов 0-9.
Итак, 0123456789 должен привести к массиву всех единиц. 0123333 должен получиться массив со значениями 1114000000.
getchar () вернет код символа для символа как int. Посмотрите на таблицу ASCII, такую как: http://www.cs.utk.edu/~pham/ascii_table.jpg .
Итак, если вы введете '0', c будет 48. Вычитание «0» из входного значения аналогично вычитанию 48, поэтому вы получите значения int 0..9 в целочисленном массиве
c - '0'
преобразует символ из его кода ASCII в само значение. Это становится индексом массива. Оператор индексации массива имеет более высокий приоритет, чем преинкремент, поэтому значение в массиве в результирующем индексе будет увеличиваться.
Часть [c - '0'] создает индекс с отсчетом от нуля для ndigit []. Он делает это, беря c (который имеет значение ASCII в диапазоне от 48 до 57) и вычитает 48 (значение ASCII «0»)
Для POSIX и ISO C требуется:
Закодированные значения, связанные с цифры от 0 до 9 должны быть такими, чтобы значение каждого символа после 0 должно быть на единицу больше, чем значение предыдущий символ.
Это инкрементный счетчик введенных символов от «0» до «9».
например,
если вы поставили «1» дважды, когда ndigit [1] будет 2,
если вы поставите '5' один раз, когда ndigit [5] будет 1,
Если u введите '0' 5000000 раз, когда ndigit [0] будет 5000000 =)
... и т. Д.