Датотека заглавља:
низ.хСинтакса:
воид * мемпцпи (воид * дест, цонст воид * срц, сизе_т сизе)Аргументи:
Функција узима 3 аргумента:
- дест:
- срц:
- величина:
Ово је почетни показивач меморијског блока тамо где је меморијски блок назначен срц (2. аргумент) ће бити копиран. Показивач је проглашен празним, тако да се може копирати било који тип меморијског блока.
Ово је почетни показивач изворног меморијског блока одакле ће се меморијски блок копирати. Показивач је проглашен празним, тако да се може копирати било који тип меморијског блока.
Ово је величина меморијског блока у бајтовима.
Вредност два показивача дест и срц треба да буде на такав начин да се два меморијска блока не преклапају. Величина меморијских блокова извора и одредишта мора бити најмање величина (3. аргумент) бајтови како би се избегле преклапајуће ситуације. Ако се два меморијска блока преклапају, тада се понашање мемцпи () функција није дефинисана. Када постоји могућност преклапања, можете користити меммове () функција библиотеке где је преклапање добро дефинисано. меммове () функција је спорија у поређењу са мемцпи () функцију.
Због вредности величина, ако се извору или одредишту приступа преко њихове дужине бафера, тада се понашање мемцпи () функција није дефинисана.
Тхе мемцпи () функција не означава да ли завршава знак '\ 0'.
Повратне вредности:
Ова функција враћа вредност одредишне адресе дест. Као вредност дест је већ доступан, па га није потребно чувати у било којој променљивој.
Примери:
// Пример1.ц#инцлуде
#инцлуде
инт маин ()
цхар срц [] = "Здраво";
цхар дест [13];
мемцпи (дест, срц, 6);
принтф ("дест након прве мемцпи () =>% с \ н", дест);
мемцпи (дест + сизеоф (срц) -1, "свет!", 8);
принтф ("дест после друге мемцпи () =>% с \ н", дест);
ретурн 0;
У Примеру1.ц прогласили смо низ од два знака срц и дест. Величина срц је 6 и дест је 13. Прво смо копирали 6 знакова „Х“, „е“, „л“, „л“, „о“, „\ 0“ из срц до дест (Линија 11). У другу функцију мемцпи () копирано је 8 знакова ", 'в', 'о', 'р', 'л', 'д', '!',' \ 0 'до одредишта након 5 знакова (ред 15). Сликовито то можемо представити на следећи начин:
// Пример2.ц
#инцлуде
#инцлуде
инт маин ()
типедеф струцт студент
назив карактера;
инт ид;
инт аге;
стд;
стд студент1; // Прогласити студент1 типа стд
стд студент2; // Прогласити студент2 типа стд
// Додељивање вредности судент1
студент1.наме = "Бамдев Гхосх";
студент1.ид = 1105;
студент1.старост = 30;
принтф ("Студент1: \ н \ тНаме:% с \ н \ тид:% д \ н \ тага:% д \ н", студент1.име,
студент1.ид, студент1.старост);
// Копирај студент1 у студент2
мемцпи (& студент2, & студент1, величина (студент1));
принтф ("\ н \ нНакон мемцпи:");
принтф ("\ н \ нУченик2: \ н \ тИме:% с \ н \ тид:% д \ н \ ознака:% д \ н",
студент2.име, студент2.ид, студент2.старост);
ретурн 0;
У Примеру2.ц прогласили смо две структуре студент1 и студент2 (Ред 15 и 16). Прво иницијализујемо студент1 (редови 19, 20, 21). После тога користимо мемцпи за копирање података из студент1 до студент2.
Закључак:
У овом чланку смо научили како се користи мемцпи функцију. Видели смо да се ова функција може користити за било који тип меморијског блока, али ова функција има одређена ограничења. Дакле, ову функцију морате пажљиво користити.