指针和数组的区别

#include <math.h>
#include <stdio.h>

int fact(int *facs) {
    int  i, j = 0;
    for(i = 1; i <3; i++)
 {
            *(facs + j) = i;
            printf("%d/n", i);
            printf("%d/n", facs + j);
            j++;
    }
    return j;
}
/*原意是想让fact()函数的运行结果保存到fac指向的内存中,可是结果再显示时值发生了改变*/
main() {

        int total = 0, j, m = 0, k;
        int *fac;         //只定义了指针,没分配内存来存贮fact()函数的运行结果
        fac = &m;        //让fac指向m  
        k = fact(fac);
   printf("%d/n", j);
    printf("%d/n", total);
        for(j=0; j < k; j++) {
            printf("%d/n", *(fac + j));
            printf("%d/n", (fac + j));/
            total += *(fac + j);
        }    
}

/*让fac = &m; 只是让fact()函数的运行结果有个存储的地方。
因为刚开始定义变量是int total = 0, j, m = 0, k; 一起定义存储这些变量被相邻的内存块中,
也就是说fac+1的话*(fac+1)就是j变量了
而fac+2的话*(fac+2)就是total变量了
所以当调用
printf("%d/n", *(fac + j));
printf("%d/n", (fac + j));

当j=1 printf("%d/n", *(fac + 1)); 就输出j的值1
当j=2 printf("%d/n", *(fac + 2)); 就输出total的值5 

*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值