簡體   English   中英

在c中使用memset()

[英]Usage of memset() in c

我編寫了一個小程序來習慣memset()操作:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <limits.h>

int main()
{
    int arr[10], i;
    int t = INT_MAX;
    memset(arr, t, sizeof(arr));
    for (i = 0; i < 10; i++)
        printf("%d\t",arr[i]);

    printf("%d",t);
    return 0;
}

上述計划的結果是:

-1 -1 -1 -1 -1 -1 -1 -1 -1 -1

2147483647

memset()在上面的程序中的行為是什么? 為什么將數組元素設置為-1

memset僅占用該值的低8位,並用這些位填充整個緩沖區。 MAX_INT的低8位全為1( 0xFF ),因此數組之后填充所有1。 對於有符號整數,這是-1。

Memset將arr指向的內存塊的第一個sizeof(arr)字節設置為解釋為unsigned char。 因此,當您從arr讀取整數時,您獲得的內容取決於您平台上這些字節的解釋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM