【发布时间】:2011-03-08 20:04:54
【问题描述】:
我和朋友吵架了。他说我可以从函数返回指向本地数据的指针。这不是我学到的,但我找不到他的反驳来证明我的知识。
以下是图解案例:
char *name() {
char n[10] = "bodacydo!";
return n;
}
它被用作:
int main() {
char *n = name();
printf("%s\n", n);
}
他说这完全没问题,因为在程序调用 name 之后,它会返回一个指向 n 的指针,然后就打印它。与此同时,程序中没有其他任何事情发生,因为它是单线程的并且执行是串行的。
我找不到反驳的理由。我永远不会写那样的代码,但他很固执,说这完全没问题。如果我是他的老板,我会因为他是个顽固的白痴而解雇他,但我找不到反驳的理由。
另一个例子:
int *number() {
int n = 5;
return &n;
}
int main() {
int *a = number();
int b = 9;
int c = *a * b;
printf("%d\n", c);
}
等我得到一些好的答案后,我会把这个链接发给他,这样他至少会学到一些东西。
【问题讨论】:
-
你的团队有多少人?你有没有想过将“代码审查”作为“改进”(金钱、职位、声望)的基础 Codeview 不是“过度控制”,而是一种软件质量的方式。
-
我们不在一个团队中,他只是我的朋友,也写 C 和 C++。我其实是个学生。