c语言指针6487572是谁的地址,c语言传值调用,引用调用,地址调用

指针是C语言中比较难理解的部分。(尤其是对于 * & 的使用不是很清楚)下面我们讲看看几个小例子。

在这里插入代码片

int n=5;

printf("n=%d\n",n);

int b=n;

printf("b=%d\n",b);

printf("n地址=%d\n",&n);

printf("b地址=%d\n",&b);

结果

n=5

b=5

n地址=6487580

b地址=6487576

从上述的结果中我们可以看到,b=n;操作将n的值复制给b,此时b的地址与n的地址不同,说明b在内存中开辟了一块新的内存空间。

接下里我们这样更改上诉代码(引用,相当于给)

int &b=n;

结果

n=5

b=5

n地址=6487572

b地址=6487572

从上述的结果中我们可以看到,&b=n;操作将n的值复制给b,此时b的地址与n的地址相同同,那么我们猜想两种情况中如果b+1以后,n的值怎样??

第一种情况中对b加一显然不会使得n变化,而二种情况中显然会使n变化,因为b+1改变了原有的内存地址,导致n发生变化。

根据上述两种情况即为传值调用和引用调用。

接下来我们看另一种情况

int n=5;

int *b=&n;

printf("n=%d\n",n);

printf("b=%d\n",b);

printf("n地址=%d\n",&n);

printf("b指向地址的内容=%d\n",*b);

结果

n=5

b=6487580

n地址=6487580

b指向地址的内容=5

int 类型的指针b将变量n的地址存放在了b中。

*b取得了b指向的地址中的内容即n的值5

接下来我们分别执行

b=6487572

n地址=6487572

b指向的内存中的内容=5

b+=1;

b=6487576

b指向的内存中的内容=6487576

n=5

n地址=6487572

我们发现b的值和多指向的内容变为了6487576(int 4),而未改变n中的内容

n=5

b=6487572

n地址=6487572

b指向的内存中的内容=5

*b+=1;

b=6487572

b指向的内存中的内容=6

n=6

n地址=6487572

我们发现n的值和地址已经发生了改变。

``

总结

传值时(a,b) int (int x,int y)x,y变动与a,b变动无关(地址不同)

引用(a,b) int (int &x,int &y) a,b会随着想x,y变动变动(地址相同)

地址 (&a,&b)int (int *x,int *y)相当于

x=&a;

y=&b;

a,b会随着 *x,*y改变而改变

(本人水平有限,欢迎指正交流)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值