char str[]="beautiful earth";
memset(str,'*',6);
printf("%s",str);
output:
******ful earth
int arr[15];
memset(arr,1,6);
아니요인 멤세트 () '이' 처럼 사용할 수 없습니다. 마 페이지 를 말한다 (강조 내거냐):
이 함수 () ',' 멤세트 > 칠합니다 메모리 영역 's' 에 의해 처음으로 'n' 바이트입니다 abc. 함께 상수입니다 바이트입니다 'c'.
이 때문에 보통 int '한' 4 바이트입니다 won& # 39, t 자를까.
이렇게 할 경우 ( 잘못!! ):
int arr[15];
memset(arr, 1, 6*sizeof(int)); //wrong!
그럼 int 의 첫 번째 6 '에서 실제 사용될 어레이입니다 설정되었습니다 0x01010101 = 16843009.
이 솔루션은 '세트' 를 사용하려면 루프 및 it yourself.
int arr[15];
int i;
for (i=0; i<6; ++i) // Set the first 6 elements in the array
arr[i] = 1; // to the value 1.
3 바이트 크기가 멤세트 주장이 있다. 그래서 총 바이트입니다 크기를 설정해야 합니다 [15] '도착'
memset(arr, 1, sizeof(arr));
하지만 아마도 값을 설정할 수 있는 모든 요소를 도착 1 합니다. # 39 더 후, ve you& 설정할 수 있는 루프지
for (i = 0; i < sizeof(arr)/sizeof(arr[0]); i++) {
arr[i] = 1;
}
1 세트 ' ()' 때문에 멤세트 각 바이트입니다. 그래서 it& # 39 의 너회의 않을 것으로 보인다.
상당히 많이 사용되는 메모리 영역에 따라 메맥피 반복적인 패턴은 실제로 해킹 칠할 수 있는 ''. 이 치명적인 것으로 '에서는' 복제본에 방향선이 메맥피 data-in 전달하십시오.
int arr[15];
arr[0] = 1;
memcpy(&arr[1], &arr[0], sizeof arr - sizeof *arr);
이는 물론, 그 때문에 '표준' 은 정의되지 않은 때 해킹, 예쁜 비헤이비어를 메맥피 소스 및대상 메모리 영역을 중첩됩니다. 직접 작성할 수 있습니다 '' 메맥피 버전니다 표시되어도 userdic. 있는지 복제본에 data-in 전달하십시오 방향 및 사용 위의 도시이다. 정말 그만한 가치가 아니다. 그냥 간단한 사이클입니다 너회의 스토리지로는 요소를 사용하여 원하는 값을 설정할 수 있습니다.
이상적인 설정하기 때문에 모든 1.< 아라리 멤세트 사용할 수 없습니다, , 작동됨 1.< 수 있는 모든 바이트입니다 설정하고 바이트입니다 br/> 멤세트 br/>;
memset(hash, 1, cnt);
그래서 한 번 읽고, 그 가치를 16843009 =, = 1000000010000000100000001 < br/> 0x01010101 보여주게 된다. Br/> 0x00000001< 없습니다;; 부울 값을 설정할 수 있습니다 다음 신앙이니라 너회의 레키렘백 는 c 언어의 표준 C99 사용하여 라이브러리 또는 이진 대해서만
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h> //Use C99 standard for C language which supports bool variables
int main()
{
int i, cnt = 5;
bool *hash = NULL;
hash = malloc(cnt);
memset(hash, 1, cnt);
printf("Hello, World!\n");
for(i=0; i<cnt; i++)
printf("%d ", hash[i]);
return 0;
}
Hello, World! 1 1 1 1 1
이 때문에 아니예 언급했다.
정수 값으로 초기화하지 수는 없지만, '1' '-' 값을 사용하여 간단하게 할 수 있는 그들 멤세트 전날에약혼자에게 초기화하지 로직을 변경하십시오 작동합니까 음수 값을 한다.
예를 들어, 6 개의 숫자를 '-' 의 첫 번째 초기화하려면 너회의 어레이에는 못하며창조된 됩니다
memset(arr,-1,6*(sizeof int));
게다가 이렇게 해야 하는 경우에만 실제로 선언할 수 있습니다 '1' 에서 시작하여 한 번 초기화하지 스토리지로는 값이 컴파일 타임.
int arr[15] = {1,1,1,1,1,1};
난 다음 프로그램 및 한 것으로 보인다 - 1 과 0 만 () 와 함께 사용하여 너회의 어레이입니다 멤세트 초기화하지 수 있습니다.
#include<stdio.h>
#include<string.h>
void printArray(int arr[], int len)
{
int i=0;
for(i=0; i<len; i++)
{
printf("%d ", arr[i]);
}
puts("");
}
int main()
{
int arrLen = 15;
int totalNoOfElementsToBeInitialized = 6;
int arr[arrLen];
printArray(arr, arrLen);
memset(arr, -1, totalNoOfElementsToBeInitialized*sizeof(arr[0]));
printArray(arr, arrLen);
memset(arr, 0, totalNoOfElementsToBeInitialized*sizeof(arr[0]));
printArray(arr, arrLen);
memset(arr, 1, totalNoOfElementsToBeInitialized*sizeof(arr[0]));
printArray(arr, arrLen);
memset(arr, 2, totalNoOfElementsToBeInitialized*sizeof(arr[0]));
printArray(arr, arrLen);
memset(arr, -2, totalNoOfElementsToBeInitialized*sizeof(arr[0]));
printArray(arr, arrLen);
return 0;
}
memset((char *)&tab, 0, sizeof(tab));