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,在字节的层面上来操作内存。这种操作可以使移动,复制,交换,初始化等。内存的少不了内存地址,因为每个字节都有一个唯一一个地址,所以就会用到指针。

  • 相关阅读:
    UVA 12545 Bits Equalizer
    UVA 1610 Party Games
    UVA 1149 Bin Packing
    UVA 1607 Gates
    UVA 12627 Erratic Expansion
    UVA10562-Undraw the Trees(递归)
    UVA10129-Play on Words(欧拉路径)
    UVA816-Abbott's Revenge(搜索进阶)
    UVA1103-Ancient Messages(脑洞+dfs)
    UVA839-Not so Mobile
  • 原文地址:https://www.cnblogs.com/MalcolmMeng/p/9055910.html
Copyright © 2011-2022 走看看