История изменений
Исправление LINUX-ORG-RU, (текущая версия) :
У а
есть тип, у типа есть конкретный размер в байтах, число в [скобочках] говорит нам разное,
на этапе объявления type a[N]
грубо говоря a = allocа(sizeof(type) * N)
на этапе обращения x = a[N]
равно x = (a + (sizeof(a) * N))[0]
.
С нуликом в конце корректнее если мы про байты говорим, а не просто *
разыменовываем.
a
для примера, псевдокодный конечно. До операции сложения мы считаем что указатель приведён к char
, а зизеоф берёт уже реальный размер, если читать иначе белиберда получится
Исправление LINUX-ORG-RU, :
У а
есть тип, у типа есть конкретный размер в байтах, число в [скобочках] говорит нам разное,
на этапе объявления type a[N]
грубо говоря a = allocа(sizeof(type) * N)
на этапе обращения x = a[N]
равно x = (a + (sizeof(a) * N))[0]
.
С нуликом в конце корректнее если мы про байты говорим, а не просто *
разыменовываем. a
для примера, псевдокодный конечно.
man адресная арифметика
Исправление LINUX-ORG-RU, :
У а
есть тип, у типа есть конкретный размер в байтах, число в [скобочках] говорит нам разное,
на этапе объявления type a[N]
грубо говоря a = allocа(sizeof(type) * N)
на этапе обращения x = a[N]
равно x = (a + (sizeof(a) * N))[0]
.
С нуликом в конце корректнее если мы про байты говорим, а не просто *
разыменовываем.
man адресная арифметика
Исправление LINUX-ORG-RU, :
У а
есть тип, у типа есть конкретный размер в байтах, число в [скобочках] говорит нам разное,
на этапе объявления type a[N]
грубо говоря a = allocа(sizeof(type) * N)
на этапе обращения x = a[N]
равно x = (a + (sizeof(a) * N))[0]
.
С нуликом в конце корректнее если мы про байты говорим, а не просто *
разыменовываем.
Исправление LINUX-ORG-RU, :
У а
есть тип, у типа есть конкретный размер в байтах, число в [скобочках] говорит нам разное,
на этапе объявления type a[N]
грубо говоря a = allocа(sizeof(type) * N)
на этапе обращения x = a[N]
равно x = (a + (sizeof(a) * N))[0]
. С нуликом в конце корректнее если мы про байты говорим, а не просто *
разыменовываем.
Исправление LINUX-ORG-RU, :
У а
есть тип, у типа есть конкретный размер в байтах, число в [скобочках] говорит нам разное,
на этапе объявления type a[N]
грубо говоря a = allocа(sizeof(type) * N)
на этапе обращения x = a[N]
равно x = *(a + (sizeof(a) * N))
.
Исходная версия LINUX-ORG-RU, :
У а
есть тип, у типа есть конкретный размер в байтах, число в [скобочках] говорит нам разное,
на этапе объявления type a[N]
грубо говоря a = allocа(sizeof(type) * N)
на этапе обращения x = a[N]
равно x = a + (sizeof(a) * N)
.