Why is that? I learned C++ first, but spend most of my time now using C. It makes more sense to me that the type should be one thing (struct Bark*) and the identifier a different thing (p_dog).
Also, a take from Stroustrup since I found it. https://www.stroustrup.com/bs_faq2.html#whitespace