C语言 函数返回指针 得负 高手帮忙~

来源:百度知道 编辑:UC知道 时间:2024/06/24 14:45:53
int *Add(int a)
{
int *p;
p=&a;
printf("Add - a 1 %d \n",a);
*p=*p+100;
printf("Add - a 2 %d \n",a);
return p;

}

main()
{
int a,b,*aa,*bb;
a=10;b=20;
aa=&a;bb=&b;
a=*aa+*bb;
printf("%d \n",a);
printf("Use manage \n");
printf("%d",Add(a));

getch();
}

结果为 -60 .... 不解 高手帮忙

Add()返回的是一个指针 printf("%d",Add(a));打印的是指针 而不是数字
应该是这样吧
printf("%d",*Add(a));
不过你返回的指针 是指向Add函数里面的变量a的,当Add函数结束以后 a在的那部分内存就被释放了 里面的数据可能改变

实参是栈里的, 函数退出之后就释放了。 不要返回这样的指针

结果只有-60么?
printf("%d",Add(a)); 这句话想把是想把指针打印出来么?

答案:30
Use manage
Add - a 1 30
Add - a 2 130
你最后面的getch()是不是接受返回来的指针??如果接受的话 返回的指针类型是int啊
getch()作用只是从控制台读取一个字符,但不显示在屏幕上

printf("%d",*Add(a));

你再试一下,我运行结果好像没有问题