/***************************************************** * 传值和传参数的经典示例 * written by Ln *****************************************************/ #include<stdio.h> #include<string.h> #include<stdlib.h> int get(int &x) { x = x*x; printf("get()_&: x: %d /n", x); return x; } int get1(int *x) { *x = (*x)*(*x); printf("get_*: x: %d /n", *x); return *x; } int get2(int x) { x = x*x; printf("get_int: x: %d /n", x); return x; } int main(void) { int *p; p = new int(10); printf("值调用之前的参数初试值 : p: %d /n", *p); printf("值调用,返回值:main()_int_return: p: %d /n", get2(*p)); printf("值调用之后的参数值:main()_int: p: %d /n", *p); printf("-----------------------------------------------------------/n"); int &pp = *p; printf("引用调用之前的初试值 : p: %d /n", *p); printf("引用调用,返回值:main()_&_return : p: %d /n", get(pp)); printf("引用调用之后的参数值:main()_&: p: %d /n", *p); printf("-----------------------------------------------------------/n"); printf("指针调用之前的初试值 : p: %d /n", *p); printf("指针调用,返回值:main()_*_return: p: %d /n", get1(p)); printf("指针调用之后的参数值:main()_*: p: %d /n", *p); /*printf("%d", *p); int a = 5; int &n = a; printf("main(): get(n): %d /n", get(n)); */ return 0; } 结果: liuna@benz> a.out 值调用之前的参数初试值 : p: 10 get_int: x: 100 值调用,返回值:main()_int_return: p: 100 值调用之后的参数值:main()_int: p: 10 ----------------------------------------------------------- 引用调用之前的初试值 : p: 10 get()_&: x: 100 引用调用,返回值:main()_&_return : p: 100 引用调用之后的参数值:main()_&: p: 100 ----------------------------------------------------------- 指针调用之前的初试值 : p: 100 get_*: x: 10000 指针调用,返回值:main()_*_return: p: 10000 指针调用之后的参数值:main()_*: p: 10000