zoukankan      html  css  js  c++  java
  • scanf函数输入时为什么要加&

    对于scanf函数,它将参数视为一个地址,将键盘输入的字符传到这个地址中去,通常我们都是用的&地址的符号,事实上如果一个值恰好是一个地址的话,不加&也一样可以的:

    如下例(测试环境为Win7 64位):

    #include <stdio.h>

    void main()

    {

       int n = 0x18ff48;

       int m = 0x18ff44;

       //查看此时n,m的地址和值

    printf("%x:%x ",&n,n);

       printf("%x:%x ",&m,m);

      

       scanf("%p",n);

       scanf("%p",m);

       //查看此时n,m的地址和值

       printf("%x:%x ",&n,n);

       printf("%x:%x ",&m,m);

       getchar();

    }

    这里我们将n,m的值设为一个地址格式的值,而且该地址还是空闲内存,在scanf输入的时候略去&,这时候scanf会将n,m的值作为一个地址,向该地址内写入数据而不是改变m和n的值。 

    运行后结果如图:                     

    scanf输入的值实际上是传给了地址18ff48和18ff44处,如果我们加上&,则改变的会是18ff44和18ff40处的值,这也就证明了scanf函数就是将参数视为一个地址,如果一个参数值恰好是个地址格式值,不用加&符号也可以赋值,只不过是将参数值作为地址而已。

  • 相关阅读:
    FSL
    64位MicrosoftOfficeWord加载EndnoteX7
    Lobes of the brain
    Anterior and posterior commissures
    Broadmann area (wiki)
    Broadmann分区
    matlab FDR校正
    AI图片剪切
    DPABI advanced edition 文件夹组织形式
    Frequently Asked Questions
  • 原文地址:https://www.cnblogs.com/wxl2578/p/3250212.html
Copyright © 2011-2022 走看看