1 #include <stdio.h>
2 int* inc(int val)
3 {
4 int a = val;
5 a++;
6 return &a;
7 }
8
9 int main(void)
10 {
11 int a = 10;
12 int *val = inc(a);
13 printf("\n Increamented value is equal to [%d] \n", *val);
14
15 return 0;
16 }
A:虽然上面的代码有时运行会很好,但是在方法 inc() 中有很严重的隐患,因为它返回了局部变量的地址。��inc()方法执行后,再次使用局部变量的地址就会造成不可估量的结果。解决之道就是传递变量a的地址给main()。PS:我觉得最后一句的说法有问题。
12 处理printf()参数
Q:请问以下代码的输出是什么?
#include<stdio.h>
int main( void )
{
int a = 10, b = 20, c = 30;
printf ("\n %d..%d..%d \n", a+b+c, (b = b*2), (c = c*2));
return 0;
}
A:程序的输出如下:
110..40..60
这是因为参数都是从右向左处理的,然后打印出来却是从左向右。