Я написал небольшую программу, чтобы привыкнуть к memset()
операции:Использование MemSet() в C
#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
?
Предполагая, что int - 32 бита, 4 байта, вы имеете в виду, что memset использует только биты 0-7, чтобы определить значение, которое они представляют, и поместить это значение в целевую ячейку памяти? Если да, это значит также, поскольку unsigned char может обрабатывать только старомодный ascii? – icbytes
Я не уверен, что понимаю этот вопрос. бит от 0 до 7 - это восемь бит, что на один бит больше, чем ascii (если вы не учитываете четность). Но да, если вам нужен шаблон размером более 8 бит, вам нужно использовать другую функцию (wmemset приходит на ум) или цикл for. –
Хорошо. Вы хорошо поняли и ответили на мой вопрос. Спасибо. – icbytes