2 qq 36187689 qq_36187689 于 2016.09.22 12:39 提问

变量赋值的底层实现。

C语言中,相同类型的变量赋值底层是怎么实现的比如:
int a=3;
int b;
b=a;
内存操作的实现

3个回答

shihengzhen101
shihengzhen101   Rxr 2016.09.22 13:47
已采纳

其实就是在内存里完成值的传递

 void main()
{
00FE14A0  push        ebp  
00FE14A1  mov         ebp,esp 
00FE14A3  sub         esp,0D8h 
00FE14A9  push        ebx  
00FE14AA  push        esi  
00FE14AB  push        edi  
00FE14AC  lea         edi,[ebp-0D8h] 
00FE14B2  mov         ecx,36h 
00FE14B7  mov         eax,0CCCCCCCCh 
00FE14BC  rep stos    dword ptr es:[edi] 

    int a=3;
00FE14BE  mov         dword ptr [a],3 
    int b;
    b=a;
00FE14C5  mov         eax,dword ptr [a] 
00FE14C8  mov         dword ptr [b],eax 
}
lx624909677
lx624909677   Ds   Rxr 2016.09.22 13:43

先查看a地址指向内存区域中的内存,然后将a指向内存区域中的内存拿 出来,再放到b指向的内存区域中,具体的过程可以跟下对应的对边代码,会调用mov这些命令来完成内存上的操作

qq_36187689
qq_36187689   2016.09.23 09:54

谢谢了图片说明图片说明图片说明图片说明图片说明

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
关于i++的底层实现原理
大家都知道i++在做运算的时候,是先赋值再自加1,但底层究竟是怎样实现的呢?下面,就三个例子来说明一下i++的底层实现原理。 第一个例子: public class Test1{ public static void main(String [] args){ int i = 10; i = i++; System.out.println(i); } }程序输出为
JDK源码中为什么在方法中创建一个临时变量替代成员变量、类变量
JDK源码中为什么在方法中创建一个临时变量替代成员变量、类变量 又名 临时变量提高Java代码性能 一个Java类中可以存在多种形式的变量,可以是最一般的成员变量;或静态变量;或临时变量。那么这三种变量的存取效率如何? 1、实战出真知 package com.subject.variable; /** * 使用临时变量提高Java代码性能 (转) */ public class ...
变量的底层实现
PHP变量是通过zval结构体来存储的 文件: Zend/zend.h 316行左右(PHP
12、Python 变量的定义命名规范和赋值
12、Python 变量的定义命名规范和赋值,12、Python 变量的定义命名规范和赋值.
回归分析中变量的赋值
回归分析中变量的赋值,讲述关于数学建模中变量赋值的问题
spss变量赋值分两组
统计软件spss16.0 变量赋值分两组视频教程,如何给变量赋值和分组
sql*plus 变量赋值及输出到文件
sql*plus 定义变量,变量赋值,输出到文件;简单
【GoLang笔记】实例分析GoLang built-in数据结构map的赋值引用行为
备注1:本文旨在介绍Go语言中map这个内置数据结构的引用行为,并用实例来说明如何避免这种引用行为带来的“副作用”。 备注2:文末列出的参考资料均来自GoLang.org官方文档,需翻墙访问。 1. map internals map是go中内置的数据结构,关于其语法规则,可以查看language specification中这里的说明,或者查看Effective Go中关于Maps的说
makefile中的变量
makefile中的变量 定义和赋值的文章.
java 静态变量和静态块底层原理
Java静态变量的初始化(static块的本质) 在网上看到了下面的一段代码: public class Test {       static {            _i = 20;        }       public static int _i = 10;              public static void main(String[] args) {