Ответ 1
Функция статична, а не тип возврата. Это означает, что он может быть вызван только из текущего блока компиляции.
Каков возможный эффект возврата данных статического типа. И когда мы должны его использовать?
static ssize_t
my_read(int fd, char *ptr)
{
//code from Stevens Unix Network programming.
if (something)
return (-1)
if (something else)
return (0)
return (1)
}
зачем статично здесь?
Спасибо.
Функция статична, а не тип возврата. Это означает, что он может быть вызван только из текущего блока компиляции.
Мы используем статический тип данных при возврате указателя на переменную, созданную в вызываемой функции. Например,
float * calculate_area(float r)
{
float *p;
static float area;
p=&area;
area=3.14*r*r;
return p;
}
Если вы сделаете область как автоматическую переменную, то есть без какого-либо классификатора типа, она будет уничтожена, когда управление вернется из вызываемой функции. Когда объявлено как статическое, вы можете правильно получить значение области из основного. Таким образом, чтобы она сохраняет свою ценность, мы делаем ее статичной.