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函数就是将参数视为一个地址,如果一个参数值恰好是个地址格式值,不用加&符号也可以赋值,只不过是将参数值作为地址而已。

  • 相关阅读:
    ScrollView 实现循环轮播
    UINavigationController和UITabBarController合用
    iOS开发网络篇—网络编程基础
    iOS开发网络篇—搭建本地服务器
    iOS开发网络篇—HTTP协议
    iOS开发网络篇—GET请求和POST请求
    UIView
    iOS准备程序
    iOS小程序-混合计算器
    IOS入门-计算机小程序
  • 原文地址:https://www.cnblogs.com/wxl2578/p/3250212.html
Copyright © 2011-2022 走看看