程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C語言:模擬實現內存放置函數memset()

C語言:模擬實現內存放置函數memset()

編輯:關於C語言

C語言:模擬實現內存放置函數memset()


模擬實現內存放置函數memset()          我們查看庫函數可知,函數原型為:     void * __cdecl memset ( void *dst, int val, size_t count),我們常用於將數組arr向後幾個字節初始化置為0,而並不怎麼用於置為其他元素,如1。這是因為:        val = 1,是int型,將它賦給char型dest,則只把低八位賦給dest,下次再接著循環,每次都只把一個字節長度的1賦給dest。如此重復count次,結束。在輸出過程中,而arr是int型,一個int型是4個char型,即每次輸出的結果都是:1000  0000   1000  0000  1000 0000  1000  0000這個十進制的值。       代碼如下:  
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>


void *my_memset(void *p1, int val, size_t count)
{
    char *dest = (char *)p1;
    char *ret = dest;
    while(count--) 
    {
        *dest = val;
        dest = dest + 1;
    }
    return ret;
}

int main()
{
    int arr[] = { 1, 3, 5, 6, 8, 9 };
    int i = 0;
    int *ret = my_memset(arr, 1, 16);
    for (i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
    {
        printf("%d ", *(ret + i));
    }
    system("pause");
    return 0;
}

 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved