c语言入门代码解答,关于变量的改变

img


这个程序中,为什么i的值不会随着n的改变而改变。我刚刚入门,还没有理解这是为什么,按我的理解定义i=n,那么,随着n的改变,不是i也会改变吗?

int i=n; 只是把n的值赋给变量i了,变量i和变量n存储在不同的内存上,所以变量i不会随着n的改变而改变;

如果变量i为int指针,然后用下面这种方式赋值,(int *i=&n),就是把指针变量i就是指向的变量n,(*i)的值就会和n的值相同,因为它们是同一块内存的值。

测试代码如下:


#include <stdio.h>

int main(void){
    
    int n;
    
    scanf("%d",&n);
    int fact=1;
    
    int i=n;
    //int * i=&n;
    for(n=n;n>1;n--){
        fact*=n;
    }
    
    printf("%d!=%d\n",i,fact);
//    printf("%d!=%d\n",*i,fact);
    
    return 0;
} 

img