zoukankan      html  css  js  c++  java
  • C语言的scanf函数

    一、 变量的内存分析

     1. 字节和地址

    1> 内存以“字节为单位”,Oxffc1,Oxffc2,Oxffc3,Oxffc4....都是字节 ,0x表示的是十六进制

    2> 不同类型占用的字节是不一样的,数据越大,所需的字节数就越多

     2. 变量的存储

    1> 所占用字节数跟类型有关,也跟编译器环境有关

    2> 变量实例

     1 #include <stdio.h>
     2 int main()
     3 {
     4    //内存寻址由大到小
     5  int a=10;
     6 
     7  int b=20;
     8     
     9  printf("a的地址是:%p
    ",&a);
    10 
    11  printf("b的地址是:%p
    ",&b);
    12     
    13     return 0;
    14 }

      内存由大到小寻址,优先分配内存地址较大的字节给变量。a的内存地址比b

      每个变量都有地址:第一个字节的地址就是变量的地址

    3> 查看内存地址:

      int a;

      printf("a的地址是:%p ", &a);

    4> 注意

      在变量未经初始化之前,不要尝试使用变量的值

      int a;

      printf("a的值是:%d ", a);

      上面的写法是不建议的

     

    二、 scanf函数

     1. 简介

      这也是在stdio.h中声明的一个函数,因此使用前必须加入#include <stdio.h>。调用scanf函数时,需要传入变量的地址作为参数,scanf函数会等待标准输入设备(比如键盘)输入数据,并且将输入的数据赋值给地址对应的变量

     2. 简单用法

      int age;

      scanf("%d", &age);

      scanf函数时,会等待用户的键盘输入,并不会往后执行代码。scanf的第1个参数是"%d",说明要求用户以10进制的形式输入一个整数。这里要注意,scanf的第2个参数传递的不是age变量,而是age变量的地址&age,&是C语言中的一个地址运算符,可以用来获取变量的地址

      输入完毕后,敲一下回车键,目的是告诉scanf函数我们已经输入完毕了,scanf函数会将输入的值赋值给age变量

     3. 其他用法

    1> 用scanf函数接收3个数值,每个数值之间用中划线-隔开

      scanf("%d-%d-%d", &a, &b, &c);

    3个%d之间是用中划线-隔开的,因此我们在每输入一个整数后都必须加个中划线-,比如这样输入,不然在给变量赋值的时候会出问题

      注意:数值之间的分隔符是任意的,不一定要用中划线-,可以是逗号、空格、星号*、井号#等等,甚至是英文字母

    // 逗号, 

    scanf("%d,%d,%d", &a, &b, &c); // 输入格式:10,14,20  

    // 井号# 

    scanf("%d#%d#%d", &a, &b, &c); // 输入格式:10#14#20  

    // 字母x 

    scanf("%dx%dx%d", &a, &b, &c); // 输入格式:10x14x20

     

    2> 用scanf函数接收3个数值,每个数值之间用空格隔开

      scanf("%d %d %d", &a, &b, &c);

      3个%d之间是用空格隔开的,我们在每输入一个整数后必须输入一个分隔符,分隔符可以是空格、tab、回车

     

    4. 注意

      scanf的第一个参数中不要包含 ,比如scanf(“%d ”, &a); 这将导致scanf函数无法结束

     

    5. 习题

      提示用户输入两个整数n,然后计算并输出两个整数的和

     

     1 //提示用户输入2个数
     2 #include <stdio.h>
     3 int main()
     4 {
     5     //定义2个变量
     6     int a,b;
     7     
     8     //提示第一个数
     9     printf("请输入第1个数:
    ");
    10     
    11     //接收第一个数
    12     scanf("%d",&a);
    13     
    14     //提示第2个数
    15     printf("请输入第2个数:
    ");
    16     
    17     //接收第2个数
    18     scanf("%d",&b);
    19     
    20     //计算和并且输出
    21     int sum = a + b;
    22     printf("%d + %d = %d
    ",a,b,sum);
    23     
    24     return 0;
    25 }

     

     

  • 相关阅读:
    Maven仓库是什么
    Maven的工程类型有哪些?
    什么是Maven?
    MyBatis 与 Hibernate 有哪些不同?
    MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据?
    使用过Redis做异步队列么,你是怎么用的?
    我们怎样才能在动作类中获得Servlet API请求,响应,HttpSession等对象?
    forward 和redirect的区别 ?
    你所知道的微服务技术栈有哪些?请列举一二
    SpringMVC流程?
  • 原文地址:https://www.cnblogs.com/zhangxiaomeng1991/p/4148502.html
Copyright © 2011-2022 走看看