Задачка по программированию: есть программа, написанная на языке Си. Сможете ли вы, не запуская её, сказать, что она напечатает? Чему равно x в конце программы?
#include <stdio.h>int main(int argc, char**argv)
{
unsigned long* x;
x = 0;
x = x + 1;
printf("X = %lu\n", x);
return 0;
}
Ответ:
Программа напечатает
X = 4
Переменная x имеет тип "указатель на unsigned long". На большинстве современных архитектур процессоров unsigned long занимает 4 байта памяти.
Правила работы с указателями в C таковы, что увеличивая или уменьшая указатель на некоторое приращение, физический адрес, на который он ссылается, изменяется на величину, равную размеру типа данных, на которые ссылается указатель, умноженную на приращение. В данном случае указатель увеличится на sizeof(unsigned long) * 1 = 4.
Название трудноуловимых частиц «кварк» – это вовсе не какой-то научный термин или фамилия его открывателя. Научного смысла этот термин вообще не имеет. Открыватель кварков – Муррей Гелл-Манн (родился в 1929 году), который в 1964 году обнаружил эти чудо-частицы, взял их название из романа Джеймса Джойса «Поминки по Финнегану», в котором один из героев произвносит: «Три кварка для мистера Марка». Причем никто толком не знает, что под этим подразумевалось. Видимо такие же смешанные чувства вызвали у Гелл-Манна открытые им частицы, вот он и выбрал такое название.