这个结果为什么是2,6,为什么不是2,5,9


#include<stdio.h>

int t=0;

int sub(int *);
int main(){
    int i;
    for(i=1;i<4;i++)
        printf("%d\n",sub(&i));
    return 0;
}

int sub(int *s){
    *s=*s+1;
    t=t+*s;
    return t;
}

你s指向i的地址。对*s加1,i也就加1,这样i循环就跳过了一次。
第1次循环i是1 调用sub(&i) *s加1,i也就加1变成2,t加2为2,返回输出2。
之后循环i++ i变成3。
第2次循环i就是3 调用sub(&i) *s加1,i也就加1变成4,t加4为6,返回输出6。
之后循环i++ i变成4结束循环。
如有帮助,望采纳!谢谢!

函数参数为什麽要用指针呢???用值参就好了啊
由于你用了指针,导致函数内部修改参数时,引起传入变量值的变更,每次循环循环变量多加了1