标题:关于scanf()函数中的“&”意义求解。
只看楼主
邹阳
Rank: 6Rank: 6
等 级:侠之大者
威 望:4
帖 子:124
专家分:402
注 册:2015-10-8
结帖率:73.68%
已结贴  问题点数:20 回复次数:5 
关于scanf()函数中的“&”意义求解。
举个实例:
#include <stdio.h>
int main()
{
    int a;
    scanf("%d",&a);
    printf("%d",a);   
    return 0;
}
  我想问,在scanf()中,“&”这个符号表示什么意思呢?有什么作用呢?求解。
搜索更多相关主题的帖子: include return 
2017-04-08 21:41
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:10 
scanf是一个函数,要让函数对参数的修改在函数返回后有效,那么必须传递该参数的地址。

最简单的例子,一个值交换函数,如下:

void swap( int a, int b)
{
    int temp;
    temp = a;
    a = b;
    b = temp;
}

这个函数对参数进行的交换,只在该函数中有效。
要让交换在函数返回后依旧有效,那么必须传递参数的地址,如下:

void swap( int *a, int *b )
{
    int temp;
    temp = *a;
    *a = *b;
    *b = temp;
}

调用该函数的方式是: swap( &a, &b );( 这里假设参数a,b不是指针);

顺带提一句:scanf()和printf() 这两个函数及它们的家族函数都是参数可变类型,所以这两个函数及它们家族函数并不能检测参数是否合法。

[此贴子已经被作者于2017-4-8 21:52编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-04-08 21:45
邹阳
Rank: 6Rank: 6
等 级:侠之大者
威 望:4
帖 子:124
专家分:402
注 册:2015-10-8
得分:0 
回复 2楼 renkejun1942
嗯嗯,其实在这里,有个问题,有关变量的值和变量的地址,我明白这是两个概念,或许我想通过scanf("%d",&a);对a赋值,但是,我想对a进行赋值,而不是取a的地址进行赋值。

I'm a new comer
2017-04-08 22:04
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:0 
回复 3楼 邹阳
我不太明白你的问题。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-04-08 22:14
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:10 
a是你的家
&a是你家的地址
scanf("%d",&a)是快递派送东西到你家的过程,是通过有效的地址才能将快件送到你家。
2017-04-09 04:49
邹阳
Rank: 6Rank: 6
等 级:侠之大者
威 望:4
帖 子:124
专家分:402
注 册:2015-10-8
得分:0 
回复 5楼 吹水佬
  嗯嗯,您讲的挺形象的,我明白了,谢谢您的指导。

I'm a new comer
2017-04-09 18:29



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-475913-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.453301 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved