使用C定义并实现一个函数,传递是三个int类型参数A,B,C,函数返回后,A的值不变,B的值变为A+B,C的值变为A-C

答案:

 1 #include<stdio.h>
 2 
 3 void func1(int *a, int *b, int *c)
 4 {
 5     *a = *a;
 6     *b = *a + *b;
 7     *c = *a - *c;
 8 }
 9 
10 int main()
11 {
12     int a = 1;
13     int b = 2;
14     int c = 3;
15     printf("a=%d\t,b=%d\t,c=%d\t\n", a, b, c);
16     func1(&a,&b,&c);
17     printf("a=%d\t,b=%d\t,c=%d\t\n", a, b, c);
18     return 0;
19 }

运行结果:

 

如果不使用指针而直接值传递调用,那么在调用完func1函数后,该函数做占用的内存、堆栈都会被释放,即a、b、c的值还是以前的,不会被改变; 

错误答案:

void func1(int a, int b, int c)
{
    a = a;
    b = a + b;
    c = a - c;
    printf("a=%d\t,b=%d\t,c=%d\t\n", a, b, c);
}

int main()
{
    int a = 1;
    int b = 2;
    int c = 3;
    printf("a=%d\t,b=%d\t,c=%d\t\n", a, b, c);
    func1(a,b,c);
    printf("a=%d\t,b=%d\t,c=%d\t\n", a, b, c);
    return 0;
}

运行结果:

 

posted @ 2020-08-11 16:12  will_w  阅读(409)  评论(0)    收藏  举报