Tag: 本地

何时将内存分配给C中的局部变量

由于局部变量也称为自动变量,并且在访问函数时应该在运行时分配内存。 int main(){ int a; // declaration return 0; } int main(){ int a[]; // compilation error, array_size missing return 0; } int main(){ int a[2]; // declaration, but can’t work without array_size, // so at compile time it is checked! return 0; } 我的问题是,在C中声明中给出array_size是一个规则,还是在编译时为数组分配内存(仍然是本地变量) 它是如何工作的? 根据K&R的C编程,数组是一个变量。 第161号。

C变量的范围

可能重复: 从函数安全和可移植返回字符串文字地址? C语言中字符串文字的“生命周期” 您好我有点困惑 char *func() { return “Hello”; } 这里“Hello”是字符序列/数组。 它是一个局部变量,一旦函数返回它就必须消失。 那我们怎么能得到正确的价值呢?

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

我跟朋友争吵了。 他说我可以从函数返回指向本地数据的指针。 这不是我所学到的,但我找不到反对他来certificate我的知识的反驳。 这是一个例子: 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 = […]