📜  C中的memset()与示例

📅  最后修改于: 2021-05-30 18:08:34             🧑  作者: Mango

memset()用于用特定值填充内存块。
memset()函数的语法如下:

// ptr ==> Starting address of memory to be filled
// x   ==> Value to be filled
// n   ==> Number of bytes to be filled starting 
//         from ptr to be filled
void *memset(void *ptr, int x, size_t n);

注意,ptr是一个空指针,因此我们可以将任何类型的指针传递给此函数。

让我们来看一个简单的C语言示例,以演示如何使用memset()函数:

// C program to demonstrate working of memset()
#include 
#include 
  
int main()
{
    char str[50] = "GeeksForGeeks is for programming geeks.";
    printf("\nBefore memset(): %s\n", str);
  
    // Fill 8 characters starting from str[13] with '.'
    memset(str + 13, '.', 8*sizeof(char));
  
    printf("After memset():  %s", str);
    return 0;
}

输出:

Before memset(): GeeksForGeeks is for programming geeks.
After memset(): GeeksForGeeks........programming geeks.

说明: (str + 13)指向字符串“ GeeksForGeeks用于编程极客”的第一个空格(从0开始的索引),并且memset()设置字符“。”。从字符串的第一个”到给定字符串的8个字符位置,因此我们得到了如上所示的输出。

// C program to demonstrate working of memset()
#include 
#include 
  
void printArray(int arr[], int n)
{
   for (int i=0; i

输出:

0 0 0 0 0 0 0 0 0 0


锻炼 :

预测以下程序的输出。

// C program to demonstrate working of memset()
#include 
#include 
  
void printArray(int arr[], int n)
{
   for (int i=0; i

请注意,作为由memset的字符工作字符的整数包含多于一个字节(或字符)上面的代码不设置数组值至10。

但是,如果将10替换为-1,则得到-1值。因为在char和int的情况下-1的表示都包含全1。

参考: memset手册页(Linux)

要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”