Я не уверен, что вы подразумеваете под "работами", но первое неверно, потому что вы берете то, на что указывает var, и сравниваете его с нулем в первом примере, и так как var был инициализирован как пользователь Введено, на что указывает var, вероятно, не является допустимым местом.
*var != 0
Принимает значение, указанное пользователем var
.
Обратите внимание, что в scanf вы сканируете целое число в int **, а не в int *, и printf использует% d для печати указателя, а не целое число.
Может показаться, что все работает или не работает, когда вы делаете неопределенные вещи по разным причинам. Вы должны понимать, почему код, который вы пишете, является правильным, вместо того, чтобы записывать некоторый код и изменять его до тех пор, пока он не заработает.