Эффект возвращаемого типа является статическим - PullRequest
13 голосов
/ 17 февраля 2011

Каков возможный эффект возврата данных статического типа.И когда мы на самом деле должны его использовать?

Спасибо.

Ответы [ 2 ]

32 голосов
/ 17 февраля 2011

Функция статическая, а не возвращаемый тип. Это означает, что его имя видно только из текущего модуля компиляции, который используется в качестве механизма инкапсуляции.

Однако эту функцию по-прежнему можно вызывать из другого места через указатель функции.

См. Также это обсуждение общего static ключевого слова для получения дополнительной информации.

1 голос
/ 17 февраля 2011

Мы используем статический тип данных при возврате указателя на переменную, созданную в вызываемой функции. Например,

float * calculate_area(float r) 
{
    float *p;
    static float area;   
    p=&area;   
    area=3.14*r*r;
    return p;
}

Если вы сделаете область автоматической переменной, т. Е. Без какого-либо спецификатора типа, она будет уничтожена, когда управление вернется из вызываемой функции. При объявлении как статического вы также можете правильно получить значение области из main. сохраняя свое значение, мы делаем его статическим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...