在main和函数中打印时变量地址的差异

Don*_*one 0 c

#include <stdio.h>

void printaddr(int n)
{
    printf("%p", &n);
}
int main()
{
    int n;
    scanf("%d",&n);
    printf("%p \n", &n);
    printaddr(n);
}
Run Code Online (Sandbox Code Playgroud)

主循环中变量n的地址打印:0028FF0C,而在printaddr函数中打印0028FEF0.

我想知道为什么地址有差异,这种差异是否代表什么?

asc*_*ler 5

地址不同,因为它们是两个不同的变量.

调用函数时,函数参数将使用函数参数值的副本进行初始化.如果你改变了n内部printaddr,它将对n内部的值没有影响main.