我想看看你是否可以通过堆栈传递结构,并设法从另一个void函数中的void函数中获取局部变量。通过堆栈传递数据
你们认为这有什么用处吗?有没有可能在两次函数调用之间得到损坏的数据?
这里的(我知道它的脏)
#include <stdio.h>
typedef struct pouet
{
int a,b,c;
char d;
char * e;
}Pouet;
void test1()
{
Pouet p1;
p1.a = 1;
p1.b = 2;
p1.c = 3;
p1.d = 'a';
p1.e = "1234567890";
printf("Declared struct : %d %d %d %c \'%s\'\n", p1.a, p1.b, p1.c, p1.d, p1.e);
}
void test2()
{
Pouet p2;
printf("Element of struct undeclared : %d %d %d %c \'%s\'\n", p2.a, p2.b, p2.c, p2.d, p2.e);
p2.a++;
}
int main()
{
test1();
test2();
test2();
return 0;
}
输出是代码在C:
申报的结构:1 2 3 A '1234567890'
结构未声明的元素: 1 2 3 a'1234567890'
结构的元素未声明:2 2 3 a'1234567890'
我忘了说:因为在C语言中,当你在堆栈中声明一个新变量时,它不会将值初始化为0或NULL,所以取值就是堆栈中的值:在这个情况下p1的值。 – 2015-02-11 09:53:54
有人会称这是一个可怕的想法。它过于依赖于C标准中没有出现的实现细节。 – 2015-02-11 09:58:34
尝试添加类似'char dummy [16];'Pouet p2;'上面的内容'并查看它是否仍按预期工作。 – 2015-02-11 10:30:39