基于visual Studio2013解决面试题之0902内存拷贝
生活随笔
收集整理的這篇文章主要介紹了
基于visual Studio2013解决面试题之0902内存拷贝
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
解決代碼及點評
/*用 C 語言實現函數 void * memmove(void *dest,const void *src,size_t n)memmove 函數的功能是拷貝 src 所指的內存內容前 n 個字節到 dest 所指的地址上。 簡單循環拷貝即可,但是這道題,要深究起來很多問題,比如內存區域是重疊的,有可能左邊重疊也可能右邊重疊*/#include <stdio.h> #include <stdlib.h> #include <memory.h>void* Mymommove( void *dest, const void *src, size_t nCount ) {if (NULL == dest || src == NULL){return NULL;}char *pszDest = (char *)dest;const char *pszSrc = (char *)src;// pszDest開始地址,處于pszSrc中,那么不能從頭開始拷貝,而是從尾部開始拷貝if (pszDest > pszSrc && pszDest < pszSrc + nCount){for (int i = nCount - 1; i >= 0; i--){pszDest[i] = pszSrc[i];}}else // 其他情況是從開始部位開始拷貝{for (size_t i = 0; i < nCount; i++){pszDest[i] = pszSrc[i];}}return dest; }int main() {char szBuf[] = "abcdefghijklmn";char szBuf2[100] = {0};char *p = szBuf + 2;Mymommove(szBuf, p, 4);printf("%s\n", szBuf);system("pause");return 0; }代碼下載及其運行
代碼下載地址:http://download.csdn.net/detail/yincheng01/6704519
解壓密碼:c.itcast.cn
下載代碼并解壓后,用VC2013打開interview.sln,并設置對應的啟動項目后,點擊運行即可,具體步驟如下:
1)設置啟動項目:右鍵點擊解決方案,在彈出菜單中選擇“設置啟動項目”
2)在下拉框中選擇相應項目,項目名和博客編號一致
3)點擊“本地Windows調試器”運行
程序運行結果
轉載于:https://www.cnblogs.com/new0801/p/6177328.html
總結
以上是生活随笔為你收集整理的基于visual Studio2013解决面试题之0902内存拷贝的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 医疗项目中对网编的一些理解看法
- 下一篇: 数理统计 —— 总体、样本、统计量及其分