Поскольку все, что находится в местоположении 0, очевидно, зависит от машины, вы можете использовать любой машинно-зависимый прием, чтобы сработать.Прочитайте документацию вашего поставщика.Вероятно, если для вас вообще имеет смысл доступ к местоположению 0, система будет настроена так, чтобы сделать это достаточно просто.Некоторые возможности:
Просто установите указатель на 0. (Это способ, который не должен работать, но если он имеет смысл, он, вероятно, будет.) Присвойте целое число 0 переменной int, ипреобразовать это int в указатель.(Это также не гарантированно работает, но, вероятно, будет.) Используйте объединение, чтобы установить биты переменной указателя на 0:
union {
int u_p;
int u_i; / assumes sizeof(int) >= sizeof(int *) */
} p;
p.u_i = 0;
Используйте memset, чтобы установить биты переменной указателя на 0:
memset((void *)&p, 0, sizeof(p));
Объявите внешнюю переменную или массив
extern int location0;
и используйте файл на языке ассемблера или какой-либо специальный вызов компоновщика, чтобы договориться, что этот символ ссылается (то есть переменнаяразмещен по адресу) адрес 0.