从子子程序调用子程序指向的变量@_@,地址是错的……
如题:plus_one和plus_two是sum的子函数,是main的子子函数,sum是main的子函数。
SUM调用plus_one和plus_two把目标增加1和2,并根据返回的值返回是否计算成功的状态(其实必然返回TRUE才对)
但是这个过程中的参数i的值却一直都没有变……
程序代码:
#include <stdio.h> #define TRUE 1; #define FALSE 0; typedef unsigned short int BOOL; BOOL plus_one(int *); BOOL plus_two(int *); BOOL SUM(int *); int main(void) { int i = 0; printf("I - Addr: 0x%p\n\n",&i); if (SUM(&i)) { printf("SUCC: %d\n",i); } else { printf("Uhm...",i); } getchar(); return 0; } BOOL plus_one(int *n) { printf("Welcome to Plus1!\n"); n += 1; printf("p1_n - Addr: 0x%p\n\n", &n); return TRUE; } BOOL plus_two(int *n) { printf("Welcome to Plus2!\n"); n += 2; printf("p2_n - Addr: 0x%p\n\n", &n); return TRUE; } BOOL SUM(int *n) { printf("sum_n - Addr: 0x%p\n\n", n); return (plus_one(n) && plus_two(n)); }
运行后结果是:
为什么plus_one和plus_two的地址和sum的n不一致?该怎么更正?