Это вопрос от Learn Objective-C на Mac ...
Функции в качестве указателей
То, что я набрал, согласно рецепту, было:
NSString *boolString (BOOL yesNo) {
if (yesNo) { return (@"YES");
} else { return (@"NO");
} } // boolString
Звездочка указателя в первой строке не кажется необходимой, но ее удаление приводит к сообщению об ошибке. Но что это делает? В
NSString * boolString (yesNo);
то, что, похоже, происходит, это функция, определенная как указатель на строку NSString. Функция без звездочки
NSLog (@"are %d and %d different? %@", 5, 5, boolString(areTheyDifferent));
возвращает NSString YES или NO. Но как он может вернуть строку NSString, когда это указатель? Это могло бы возвратить АДРЕС NSString; или в случае разыменования он может вернуть СОДЕРЖАНИЕ этого адреса (строка NSS, такая как ДА или НЕТ). И все же я не вижу места, где бы оно было разыменовано.