相关疑难解决方法(0)

通过指针从C和C++中的函数返回本地数据

我跟朋友争吵了.他说我可以从函数返回指向本地数据的指针.这不是我所学到的,但我找不到反对他证明我的知识的反驳.

这是一个例子:

char *name() {
    char n[10] = "bodacydo!";
    return n;
}
Run Code Online (Sandbox Code Playgroud)

它用作:

int main() {
    char *n = name();
    printf("%s\n", n);
}
Run Code Online (Sandbox Code Playgroud)

他说这完全没问题,因为在一个程序调用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);
}
Run Code Online (Sandbox Code Playgroud)

我得到一些好的答案后,我会把这个链接发给他,所以他至少学会了一些东西.

c memory return local

6
推荐指数
2
解决办法
3710
查看次数

标签 统计

c ×1

local ×1

memory ×1

return ×1