Если ваш вопрос действительно о том, совпадают ли типы аргумента и параметра, тогда ответ - да. typedef
не вводит новый тип, он только создает псевдоним для существующего. Переменная b
имеет тип unsigned int
, как и параметр, хотя b
объявлено с использованием typedef-name blatherskite
.
Ваш пример не очень хорош для демонстрации этого. Все целочисленные типы могут быть преобразованы друг в друга в C ++, поэтому (игнорируя проблемы диапазона) код будет иметь определенное поведение, даже если blatherskite
обозначает другой тип (новый тип). Но это не так. Так что это также совершенно верно
void foo(unsigned int* p);
...
blatherskite *pb = 0;
foo(pb); // <- still valid