The explicit argument is fine, the only thing I'm not sure of is the dot separator because at a glance I read that as accessing a variable.
I've thought of using the :: separator of C++:
func void Point::add(Point* p, i32 x) {
p.x = x;
}
This adds quite a bit of readability for me.