ios-(5)变量的内存分析、Scanf函数

一、变量的内存分析

  1.字节和地址

    *
为了更好地理解变量在内存中得存储细节,先来认识一下内存中得”字节“和”地址“。

    *
内存以字节为单位

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

  2.变量存储

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

    



























  16位编译器 32位编译器 64位编译器
char 1 1 1
int 2 4 4
float 4 4 4
double 8 8 8

     * 变量实例

       int b =10;

     int a = 20;

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

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

    *查看内存地址

      int a;

      printf("a
的地址是:%p\n",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、其他用法

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

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

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

时间: 2024-10-03 23:06:59

ios-(5)变量的内存分析、Scanf函数的相关文章

变量的内存分析

一.字节和地址 1.内存以字节为单位 每个字节都有自己的内存地址,根据地址就可以找到该字节.整个内存相当于一整个酒店,而酒店以房间为单位,在这里每个房间就相当于是每个字节,地址就是房号,根据房号可以找到房间(根据地址也可以找到内存中的字节).相邻房间的房号是连续的,相邻字节的地址也是连续的.计算机中通常以十六进制表示地址. 2.不同数据类型占用的字节是不一样的,数据越大则占用的字节数越多.如在64位编译器下,int类型占据4个字节,char类型占据1个字节. 二.变量的存储 1.内存寻址由大到小

黑马程序员————子父类中成员变量的内存分析

对于java单个类的内存分析相信大家都了解,但是如果结合继承,子类与父类是如何存在在内存中的呢,他们的先后调用关系又改是怎样的呢? 首先简单介绍一下对象的初始化过程,比如这个简单的例子 class Student{ int i =20; String name="李四"; static{ System.out.println("我是静态代码块"); } { System.out.println("我是构造代码块"); } void print()

【好程序员笔记分享】C语言之变量的内存分析

ios培训------我的c语言笔记,期待与您交流! #include <stdio.h> /* 1.内存寻址由大到小,优先分配内存地址比较大的字节给变量 2.变量越先定义,内存地址就越大 3.取得变量的地址:&变量名 4.输出地址:%p 5.一个变量一定先进行初始化,才能使用 */ int main() { // 内存寻址由大到小 int a = 10; int b = 20; int c; // &是一个地址运算符,取得变量的地址 // %p用来输出地址 // 0x7fff

【学习笔记】【C语言】变量的内存分析

计算机中的内存是以字节为单位的存储空间.内存的每一个字节都有一个唯一的编号,这个编号就称为地址.就好像酒店是以房间为单位的,每个房间都有一个唯一的房号,我们根据房号就能找到对应的房间. 1. 变量的存储 1> 所占用字节数跟类型有关,也跟编译器环境有关 2> 变量实例 int b = 10; int a = 134; *内存由大到小寻址 *只存储二进制形式 *每个变量都有地址:第一个字节的地址就是变量的地址 3> 查看内存地址的两种方式:%x和%p 4>查看整数的二进制形式 voi

ios开发 变量和内存

栈区:主要用来存放局部变量, 传递参数, 存放函数的返回地址..esp 始终指向栈顶, 栈中的数据越多, esp的值越小. 堆区:用于存放动态分配的对象, 当你使用 malloc和new 等进行分配时,所得到的空间就在堆中.动态分配得到的内存区域附带有分配信息, 所以你能够 free和delete它们. 数据区:全局,静态和常量是分配在数据区中的,数据区包括bss(未初始化数据区)和初始化数据区. 注意: 1)     堆向高内存地址生长: 2)     栈向低内存地址生长: 3)     堆和

黑马程序员——C语言变量内存分析与scanf函数

Java培训.Android培训.iOS培训..Net培训.期待与您交流! 1.变量的内存分析 1)变量以字节为单位,每个字节都有自己的内存地址,根据地址就可以找到该字节.整个内存相当于一整个酒店,而酒店以房间为单位,在这里每个房间就相当于是每个字节,地址就是房号,根据房号可以找到房间(根据地址也可以找到内存中的字节).相邻房间的房号是连续的,相邻字节的地址也是连续的.计算机中通常以十六进制表示地址.变量所占用字节数跟类型有关,也跟编译器环境有关 2)内存由大到小寻址,优先分配内存地址较大的字节

黑马程序员————C语言基本语法(关键字、标识符、注释符、变量、Scanf函数)

第一讲 关键字 1.什么是关键字? 1) 关键字就是C语言提供的有特殊含义的符号,也叫做“保留字” 2) C语言一共提供了32个关键字,这些关键字都被C语言赋予了特殊含义 C语言关键字 auto局部变量(自动储存) break 无条件退出程序最内层循环 case   switch 语句中选择项 char  单字节整型数据 const  定义不可更改的常量值 continue 中断本次循环,并转向下一次循环 default switch 语句中的默认选择项 do  用于构成do.....while

04-常量、变量、scanf函数和sizeof

一.常量 1. 什么是常量 常量,表示一些固定的数据 2. 整型常量(int)和浮点型常量(float/double) 浮点型常量分为double和float两种数据类型 * double:双精度浮点型,其实就是小数.比如 5.43.-2.3.0.0等 * float:单精度浮点型,也是小数,比double的精确程度低,也就是说所能表示的小数位数比较少.为了跟double区分开来,float型数据都是以f结尾的,比如5.43f.-2.3f.0.0f. 3. 字符常量 * 将一个数字(0-9).英

「C」关键字、标识符、注释、内存分析、数据、常量、变量

一.关键字 C语言提供的有特殊含义的符号,共32个. 一般在Xcode中关键字全部显示紫褐色,关键字全部都为小写.如int.return等. 二.标识符 标识符是程序员在程序中自定义的一些符号和名称.关键字是C语言默认提供的,标识符是程序员自定义的.如函数的名称等,用来区分各种事务. 命名规则: 只能由26个小写字母,0-9的数字以及下划线_组成. 严格区分大小写. 不能以数字开头. 不可以使用关键字作为标识符. 命名规范: (1)尽量起有意义的名称. (2)多个单词可以使用驼峰标识(第二个单词