zoukankan      html  css  js  c++  java
  • C语言交换内存中的内容

    学习C语言,可以接触到计算机的底层原理,在学习的时候碰到一个让我耳目一新的东西,“交换内存”,真是学海无涯。我先贴一下代码:

    #include <iostream>
    using namespace std;
    void SwapMemory(void * m1,void * m2, int size)
    {
    // 在此处补充你的代码
        char *c1=(char*)m1;
        char *c2=(char*)m2;
        for(int i=0;i<size;i++){
            char t=c1[i];
            c1[i]=c2[i];
            c2[i]=t;
        }
    }
    void PrintIntArray(int * a,int n)
    {
        for(int i = 0;i < n; ++i)
            cout << a[i] << ",";
        cout << endl;
    }
    int main()
    {
        int a[5] = {1,2,3,4,5};
        int b[5] = {10,20,30,40,50};
        SwapMemory(a,b,5 * sizeof(int));
        PrintIntArray(a,5);
        PrintIntArray(b,5);
        char s1[] = "12345";
        char s2[] = "abcde";
        SwapMemory(s1,s2,5);
        cout << s1 << endl;
        cout << s2 << endl;
        return 0;
    }

    这是慕课上的一个小练习,难度不高,但是刷新了我对内存的认识。

    内存的基本单位是字节,所以内存的操作都是以字节为单位进行寻址和操作。C语言中的char类型的大小刚好是一个字节,所以可以借助char,在字节的层面上来操作内存。这种操作可以使移动,复制,交换,初始化等。内存的少不了内存地址,因为每个字节都有一个唯一一个地址,所以就会用到指针。

  • 相关阅读:
    C++ 函数模板&类模板详解
    C++ const修饰不同类型的用法
    C++ 引用Lib和Dll的方法总结
    C#查询本机所有打印机
    C#如何设置桌面背景
    C#使用Aspose.Words把 word转成图片
    查看IP占用
    查看IP占用
    C# Dictionary判断Key是否存在
    C# 只有小时和分钟的两个时间进行对比
  • 原文地址:https://www.cnblogs.com/MalcolmMeng/p/9055910.html
Copyright © 2011-2022 走看看