使用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; }
运行结果:

博客园:will_w
觉得有用就点个赞吧!~

浙公网安备 33010602011771号