zoukankan      html  css  js  c++  java
  • scanf函数

    一、 变量的内存分析

    1. 字节和地址

    为了更好地理解变量在内存中的存储细节,先来认识一下内存中的字节地址

    1> 内存以“字节为单位”

    0x表示的是十六进制,不用过于纠结,能看懂这些数字之间谁大谁小就行了

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

    2. 变量的存储

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

    2> 变量实例

    int b = 10;

    int a = 20;

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

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

    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);

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

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

    3. 其他用法

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

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

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

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

    // 逗号, 

    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,然后计算并输出两个整数的和

  • 相关阅读:
    分布式缓存技术redis学习系列(一)——redis简介以及linux上的安装
    redis整合spring(redisTemplate工具类)
    架构之路之spring+redis的集成
    java之redis篇(spring-data-redis整合)
    Redis 安装
    java对redis的基本操作
    mybatis 详解(九)------ 一级缓存、二级缓存
    mybatis 详解(八)------ 懒加载
    mybatis 详解(七)------一对一、一对多、多对多
    mybatis 详解(六)------通过mapper接口加载映射文件
  • 原文地址:https://www.cnblogs.com/ljcgood66/p/4961232.html
Copyright © 2011-2022 走看看