Используйте адрес оператора &
.
Ах, да, вы правильно поняли.
Причина, по которой вы правы, заключается в том, что, например, &p_viewer
- это указатель, который указывает (например, на локальную) переменную p_viewer
, которая является struct WorldCamera
. И compute_3d_transform
хочет указатель на struct WorldCamera
, поэтому ваши намерения как вызывающего абонента совпадают с намерениями вызываемого.
Конечно, не видя всего намерения (которое можно найти, прочитав программу, включая compute_3d_transform
или, по крайней мере, ее документацию), может возникнуть логическая ошибка, но тот факт, что типы совпадают, уже очень утешительный (конечно, если бы тип был void *
вместо этого, тогда больше головных болей, потому что намерение не так ясно)