У меня есть спор с моим другом.Он говорит, что я могу вернуть указатель на локальные данные из функции.Это не то, что я узнал, но я не могу найти контраргумент для него, чтобы доказать мои знания.
Вот иллюстрированный случай:
char *name() {
char n[10] = "bodacydo!";
return n;
}
И он используется как:
int main() {
char *n = name();
printf("%s\n", n);
}
Он говорит, что это нормально, потому что после того, как программа вызывает имя, она возвращает указатель на n, а сразу после этого просто печатает его.Пока что в программе больше ничего не происходит, потому что она однопоточная, а выполнение - последовательное.
Я не могу найти контраргумент.Я бы никогда не написал такой код, но он упрям и говорит, что это совершенно нормально.Если бы я был его боссом, я бы уволил его за упрямство идиота, но я не могу найти контраргумент.
Другой пример:
int *number() {
int n = 5;
return &n;
}
int main() {
int *a = number();
int b = 9;
int c = *a * b;
printf("%d\n", c);
}
Я пришлю ему эту ссылкупосле того, как я получу несколько хороших ответов, он хотя бы чему-нибудь научится.