2013-09-13 3 views
-2

Я не уверен, что следующий делает, и я надеюсь кто-то может прояснить цель иметь звездочку перед именем функции:функция программирования указатель C

char *Foo(char *ptr) { 

return NULL; 
} 

Я понимаю, что вы можете передать по значению местоположение памяти что-то в вызове аргумента функции и * ptr будет указателем на него. Я понимаю, что вы можете создать функцию указателя, которая может использоваться для указания на другие функции, такие как обычный указатель, на переменную ячейку памяти, но в этом случае это не указатель функции, который мы можем указать на другие функции, или это так? Это похоже на реальную функцию.

+4

№ Пожалуйста, вернитесь на один шаг и прочитайте хороший учебник для начинающих. И используйте [cdecl.org] (http://cdecl.org). –

+1

Задайте себе, что делает звездочка перед этим параметром. Это должно вам что-то сказать. – WhozCraig

+1

А если вы читаете как 'char * Foo (char * ptr)' – Jack

ответ

0

его в заблуждение вас, то * от имени не связано с именем

это означает то же самое, как char* Foo(char* ptr)

что означает функцию, которая принимает char* и возвращает char*

+1

Тем не менее, лучше придерживать звезду после идентификатора, следуя за ней, так как это не делает это еще более вводящим в заблуждение: 'char * a, b' isn ' t интуитивно понятный ('*' присваивает объект, а не тип). –

2

Foo - функция.

Он имеет вход: ptr типа char*

Он имеет выход типа char*

char* означает "указатель на char"

она возвращает NULL.

Это самое простое объяснение, о котором я могу думать.

+3

«ввод» и «вывод» называются «аргументом» и «возвращаемым значением». –

Смежные вопросы