memcpy
من cppreference.com
معرفة في ملف <string.h> | ||
void* memcpy(void *dest, constvoid *src, size_t count ); | (حتى C99) | |
void* memcpy(void*restrict dest, constvoid*restrict src, size_t count ); | (منذ C99) | |
تقوم بنسخ عدد count
من الحروف من الكائن المشار إليه بـ src
إلى الكائن المشار اليه بـ dest
. في حالة وجود تداخل بين موقع الكائنين في الذاكرة يكون السلوك غير معرف.
محتويات |
[تعديل]معطيات
dest | - | مؤشر على الموقع في الذاكرة الذي سيتم النسخ إليه |
src | - | مؤشر على الموقع في الذاكرة الذي سيتم النسخ منه |
count | - | عدد البايت التي سيتم نسخها |
[تعديل]القيمة المُرجعة
dest
[تعديل]مثال
قم بتشغيل هذا الكود:
#include <stdio.h>#include <string.h> #define LENGTH_STRING 20 int main(void){char source[LENGTH_STRING]="Hello, world!";char target[LENGTH_STRING]="";int integer[LENGTH_STRING /sizeof(int)]={0}; printf("source: %s\n", source); printf("target: %s\n", target); printf("integer: ");for(unsigned i =0; i <sizeof(integer)/sizeof(integer[0]);++i){ printf("%x ", integer[i]);} printf("\n========\n"); memcpy(target, source, sizeof source); memcpy(integer, source, sizeof source); printf("source: %s\ntarget: %s\n", source, target); printf("source(hex): ");for(unsigned i =0; i <sizeof(source)/sizeof(source[0]);++i){ printf("%02x ", source[i]);} printf("\n"); printf("integer(hex: %s-endian): ", integer[0]==0x48656c6c?"big":"little");for(unsigned i =0; i <sizeof(integer)/sizeof(integer[0]);++i){ printf("%08x ", integer[i]);} printf("\n");}
خرج ممكن:
source: Hello, world! target: integer: 0 0 0 0 0 ======== source: Hello, world! target: Hello, world! source(hex): 48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 21 00 00 00 00 00 00 00 integer(hex: big-endian): 48656c6c 6f2c2077 6f726c64 21000000 00000000
[تعديل]أنظر أيضا
تنقل محتوى مصفوفة إلى مصفوفة أخرى (دالة) | |
مقالة مرجع C++ عن memcpy |