从子子程序调用子程序指向的变量@_@,地址是错的……
如题: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不一致?该怎么更正?








