Ц Програмирање

Како се користи мемсет функција

Како се користи мемсет функција

У Ц, функција мемсет () се користи за постављање једнобајтне вредности на бајт по бајт меморијског блока. Ова функција је корисна за иницијализацију бајта по бајт меморије одређеном вредношћу. У овом чланку ћемо детаљно видети како се ова функција може користити. Па, кренимо.

Датотека заглавља:

1
низ.х

Синтакса:

1
воид * мемсет (воид * стр, инт цх, сизе_т н)

Ова функција поставља прво н бајтова меморијског блока на који указује стр од стране гл.

Аргументи:

Функција узима 3 аргумента:

  1. стр: Ово је показивач на меморијску локацију на коју ће меморија бити постављена. Ово је празан показивач, тако да можемо поставити било који тип меморијског блока, али меморија ће се постављати бајт по бајт.
  2. гл: Ово је вредност коју треба копирати у меморијски блок. Ово је целобројна вредност, али се пре копирања претвара у непотписани знак.
  3. н: Ово је број бајтова у меморијском блоку који је постављен.

Повратне вредности:

мемсет () враћа прву адресу меморијског блока одакле почиње да поставља вредност.

Примери:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Пример1.ц
#инцлуде
#инцлуде
инт маин ()

цхар стр [30] = "АБЦД ЕФГХ";
принтф ("Пре мемсет =>% с", стр);
мемсет (стр, 'к', 3);
принтф ("\ нНакон мемсет =>% с \ н", стр);
ретурн 0;


У Примеру1.ц, прогласили смо један низ знакова величине 30. Затим смо га иницијализовали низом „АБЦД ЕФГХ.”У функцији мемсет проследили смо 3 аргумента стр, 'к' и 3. Дакле, меморијски блок на који показује стр ће ресетовати прва 3 знака за 'к.'Након мемсета, када одштампамо меморију, добићемо „кккД ЕФГХ.”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Пример2.ц
#инцлуде
#инцлуде
инт маин ()

цхар стр [30] = "АБЦД ЕФГХ";
принтф ("Пре мемсет =>% с", стр);
мемсет (стр + 4, 'к', 3);
принтф ("\ нНакон мемсет =>% с \ н", стр);
ретурн 0;


У Примеру2.ц, проследили смо стр + 4 функцији мемсет. Дакле, ресетовао је меморију након 4. локације стр.  Након мемсета, када одштампамо меморију, добићемо „АБЦДкккГХ.”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Пример3.ц
#инцлуде
#инцлуде
инт маин ()

инт арр [5], и;
мемсет (арр, 10,5 * сизеоф (арр [0]));
принтф ("\ нарр Елементи => \ н");
за (и = 0; и<5;i++)
принтф ("% д \ т", арр [и]);
принтф ("\ н");
ретурн 0;


У Примеру3.ц, прогласили смо целобројни низ величине 5 и покушали да га иницијализујемо за 10. Али из резултата смо видели да низ није иницијализован са 10; уместо тога, добили смо вредност „168430090“. То је зато што је целобројна вредност већа од једног бајта и функција мемсет претвара вредност у непотписани знак пре копирања. Сада ћемо видети како ћемо добити вредност „168430090“.


Бинарни приказ 10 је 00000000 00000000 00000000 00001010.

Када се цели број претвори у непотписани цхар, узима се у обзир доњи 1 бајт. Дакле, када се 10 претвори у непотписани цхар, то је бинарни приказ 00001010.

функција мемсет () поставља бајт по бајт локације меморије. Дакле, укупно 4 бајта ће бити: 00001010 00001010 00001010 00001010.

Децимална вредност бинарног приказа од 4 бајта је 168430090.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Пример4.ц
#инцлуде
#инцлуде
инт маин ()

инт арр [5], и;
мемсет (арр, 0,5 * сизеоф (арр [0]));
принтф ("\ нарр Елементи => \ н");
за (и = 0; и<5;i++)
принтф ("% д \ т", арр [и]);
принтф ("\ н");
ретурн 0;


У примеру4.ц, иницијализирали смо целобројни низ за 0. Сви битови бинарног представљања 0 су 0. Дакле, низ је иницијализован са 0.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Пример5.ц
#инцлуде
#инцлуде
инт маин ()

инт арр [5], и;
мемсет (арр, -1,5 * сизеоф (арр [0]));
принтф ("\ нарр Елементи => \ н");
за (и = 0; и<5;i++)
принтф ("% д \ т", арр [и]);
принтф ("\ н");
ретурн 0;


У примеру5.ц, иницијализирали смо целобројни низ за 0. Сви битови бинарног представљања -1 су 1. Дакле, низ је иницијализован са -1.

Закључак:

У овом чланку видели смо помоћу функције мемсет како можемо ефикасно иницијализовати или подесити вредност меморијског блока. У меморијски блок можемо поставити било који знак и 0 или -1 као целобројну вредност. Мемсет функција је бржа за постављање великог дела непрекидне меморије у поређењу са једноставним подешавањем локације помоћу петље.

Портови комерцијалних игара отвореног кода
Бесплатне рекреације покретачких игара са отвореним кодом и више платформи могу се користити за играње старих, као и неких прилично недавних наслова и...
Најбоље игре командне линије за Линук
Командна линија није само ваш највећи савезник када користите Линук - она ​​такође може бити извор забаве јер је можете користити за играње многих заб...
Најбоље апликације за мапирање гамепада за Линук
Ако волите да играте игре на Линуку са гамепадом уместо са типичним системом за унос тастатуре и миша, за вас постоје неке корисне апликације. Многе и...