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

posted @ 2018-05-18 14:03  MalcolmMeng  阅读(1057)  评论(0编辑  收藏  举报