http://www.functionx.com/cpp/examples/returnpointer.htm
double * GetSalary()
{
double salary = 26.48;
return &salary;
}
Это они серьезно так пишут.
http://www.functionx.com/cpp/examples/returnpointer.htm
double * GetSalary()
{
double salary = 26.48;
return &salary;
}
Это они серьезно так пишут.
Срань господня…
Это объясняет почему многие китайские программисты с 3-5 годами опыта не понимают почему этот код не работает на gcc, например. 8(
А где он вообще работать может?
Где угодно может работать. И напротив — может где угодно не работать.
Вообще, он прекрасно работает — в лучшем случае вызывая warning у компилятора. Никаких надругательств над синтаксисом C тут нет, код по ссылке компилируется и должен правильно работать в большинстве компиляторов.
Проблемы начнутся, если между получением значения функции и его использованием вставить еще какой-то вызов функции — в большинстве ABI для C память для переменной salary выделяется на стеке, соответственно, при следующем вызове функции она может быть затерта либо аргументами, либо локальными переменными — тут тоже возможны варианты со, скажем, регистровыми переменными.
Китайцы вообще пишут на Си очень интересно:
http://shura.luberetsky.ru/2011/07/15/nashel-bagu/
Я бы даже добавил: «внезапно не работает!»