Pengaturcaraan C

Cara Fungsi Memset Digunakan

Cara Fungsi Memset Digunakan

Dalam C, fungsi memset () digunakan untuk menetapkan nilai satu byte ke blok memori byte byte. Fungsi ini berguna untuk inisialisasi bait blok memori oleh bait dengan nilai tertentu. Dalam artikel ini, kita akan melihat secara terperinci bagaimana fungsi ini dapat digunakan. Oleh itu, mari kita mulakan.

Fail Tajuk:

1
tali.h

Sintaks:

1
void * memset (kekosongan * str, int ch, size_t n)

Fungsi ini menetapkan yang pertama bait blok memori yang ditunjukkan oleh str oleh ch.

Hujah:

Fungsi ini mengambil 3 argumen:

  1. str: Ini adalah penunjuk lokasi memori di mana memori akan ditetapkan. Ini adalah penunjuk kekosongan, jadi kami dapat mengatur apa-apa jenis blok memori, tetapi memori akan ditetapkan oleh bait demi bait.
  2. ch: Ini adalah nilai yang akan disalin ke blok memori. Ini adalah nilai integer, tetapi ditukarkan ke watak yang tidak ditandatangani sebelum disalin.
  3. n: Ini adalah jumlah bait dalam blok memori yang ditetapkan.

Nilai pulangan:

memet () mengembalikan alamat pertama blok memori dari mana ia mula menetapkan nilai.

Contoh:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Contoh1.c
#sertakan
#sertakan
int utama ()

char str [30] = "ABCD EFGH";
printf ("Sebelum memset =>% s", str);
memset (str, 'x', 3);
printf ("\ nSetelah memset =>% s \ n", str);
pulangan 0;


Dalam Contoh1.c, kami telah menyatakan satu susunan watak berukuran 30. Kemudian kami menginisialisasi dengan rentetan “ABCD EFGH."Dalam fungsi memset, kami telah melewati 3 argumen str, 'x' dan 3. Oleh itu, blok memori yang ditunjukkan oleh str akan menetapkan semula 3 aksara pertama dengan 'x.'Setelah memset, ketika kita mencetak memori, kita akan mendapat "xxxD EFGH."

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Contoh2.c
#sertakan
#sertakan
int utama ()

char str [30] = "ABCD EFGH";
printf ("Sebelum memset =>% s", str);
memset (str + 4, 'x', 3);
printf ("\ nSelepas memset =>% s \ n", str);
pulangan 0;


Dalam Contoh2.c, kami telah melewati str + 4 ke fungsi memset. Oleh itu, ia menetapkan semula memori selepas lokasi str.  Setelah memset, ketika kita mencetak memori, kita akan mendapat “ABCDxxxGH."

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Contoh3.c
#sertakan
#sertakan
int utama ()

int arr [5], i;
memset (arr, 10,5 * sizeof (arr [0]));
printf ("\ nar Elemen => \ n");
untuk (i = 0; i<5;i++)
printf ("% d \ t", arr [i]);
printf ("\ n");
pulangan 0;


Dalam Contoh3.c, kami telah menyatakan susunan bilangan bulat berukuran 5 dan berusaha menginisialisasinya dengan 10. Tetapi dari output, kita telah melihat bahawa array tidak diinisialisasi oleh 10; sebaliknya, kita mendapat nilai "168430090". Ini kerana nilai integer lebih besar daripada satu bait dan fungsi memset menukar nilai menjadi watak yang tidak ditandatangani sebelum disalin. Sekarang, kita akan melihat bagaimana kita akan mendapat nilai "168430090".


Perwakilan binari 10 ialah 00000000 00000000 00000000 00001010.

Apabila bilangan bulat ditukar menjadi char yang tidak ditandatangani, 1 bait yang lebih rendah dipertimbangkan. Jadi, apabila 10 ditukar menjadi char yang tidak ditandatangani, perwakilan binari adalah 00001010.

fungsi memset () menetapkan lokasi memori mengikut bait. Jadi, sejumlah 4 bait akan: 00001010 00001010 00001010 00001010.

Nilai perpuluhan bagi perwakilan binari 4 bait ialah 168430090.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Contoh4.c
#sertakan
#sertakan
int utama ()

int arr [5], i;
memset (arr, 0,5 * sizeof (arr [0]));
printf ("\ nar Elemen => \ n");
untuk (i = 0; i<5;i++)
printf ("% d \ t", arr [i]);
printf ("\ n");
pulangan 0;


Dalam Contoh4.c, kami telah menginisialisasi array integer dengan 0. Semua bit perwakilan binari 0 adalah 0. Oleh itu, array dimulakan dengan 0.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Contoh5.c
#sertakan
#sertakan
int utama ()

int arr [5], i;
memset (arr, -1,5 * sizeof (arr [0]));
printf ("\ nar Elemen => \ n");
untuk (i = 0; i<5;i++)
printf ("% d \ t", arr [i]);
printf ("\ n");
pulangan 0;


Dalam Contoh5.c, kami telah menginisialisasi array integer dengan 0. Semua bit perwakilan binari -1 adalah 1. Oleh itu, array diinisialisasi oleh -1.

Kesimpulan:

Dalam artikel ini, kita telah melihat penggunaan fungsi memset bagaimana kita dapat menginisialisasi atau menetapkan nilai blok memori dengan cekap. Kita boleh menetapkan sebarang watak dan 0 atau -1 sebagai nilai integer ke blok memori. Fungsi Memset lebih cepat untuk mengatur sejumlah besar memori bersebelahan dibandingkan dengan hanya menetapkan lokasi menggunakan gelung.

Cara Menunjukkan Kaunter FPS dalam Permainan Linux
Permainan Linux mendapat dorongan utama ketika Valve mengumumkan sokongan Linux untuk klien Steam dan permainan mereka pada tahun 2012. Sejak itu, ban...
Cara memuat turun dan Mainkan Sid Meier's Civilization VI di Linux
Pengenalan permainan Civilization 6 adalah konsep moden mengenai konsep klasik yang diperkenalkan dalam siri permainan Age of Empires. Idea itu cukup ...
Cara Memasang dan Memainkan Doom di Linux
Pengenalan Doom Seri Doom berasal dari tahun 90an selepas pembebasan Doom yang asal. Ini adalah hit seketika dan sejak saat itu dan seterusnya siri pe...