728x90
**메모리를 가르켜야 하므로, 동적할당의 경우 변수만 건네주지만, 동적할당이 아닌경우는 &를 써서 주소값을 넘겨주어야 합니다.
memset()
- memset(구조체포인터, 설정할값, sizeof(struct 구조체));
- 헤더 : string.h
ㅇExample
- 일반 구조체
#include <stdio.h>
#include <string.h> // memset 함수가 선언된 헤더 파일
struct Point2D {
int x; int y;
};
int main()
{
struct Point2D p1;
memset(&p1, 0, sizeof(struct Point2D)); // p1을 구조체 크기만큼 0으로 설정
printf("%d %d\n", p1.x, p1.y); // 0 0: memset을 사용하여 0으로 설정했으므로 // x, y 모두 0
return 0;
}
- 동적 할당 구조체
#include <stdio.h>
#include <stdlib.h> // malloc, free 함수가 선언된 헤더 파일
#include <string.h> // memset 함수가 선언된 헤더 파일
struct Point2D {
int x; int y;
};
int main()
{
struct Point2D *p1 = malloc(sizeof(struct Point2D)); // 구조체 크기만큼 메모리 할당
memset(p1, 0, sizeof(struct Point2D)); // p1을 구조체 크기만큼 0으로 설정
printf("%d %d\n", p1->x, p1->y); // 0 0: memset을 사용하여 0으로 설정했으므로 // x, y 모두 0
free(p1); // 동적 메모리 해제
return 0;
}
memcpy()
- memcpy(목적지포인터, 원본포인터, 크기);
- 헤더 : string.h
- void *memcpy(void *_Dst, void const *_Src, size_t _Size);
- 목적지 포인터를 반환
- 뒤에꺼를 앞에꺼에 복사! 사이즈만큼
ㅇExample
- 일반 구조체
memcpy(&p2, &p1, sizeof(struct Point2D)); // Point2D 구조체 크기만큼 p1의 내용을 p2로 복사
- 동적 할당 구조체
memcpy(p2, p1, sizeof(struct Point2D)); // Point2D 구조체 크기만큼 p1의 내용을 p2로 복사
728x90
'고흐의 연구실 > C언어와 C++' 카테고리의 다른 글
[C언어] 공용체란? Union? (0) | 2020.08.10 |
---|---|
[C언어] size_t 자료형이란? (0) | 2020.08.10 |
[C언어] 구조체 정렬 크기 조절, #pragma 란?? (0) | 2020.08.09 |
[C언어] 구조체 기초 정리 (0) | 2020.08.09 |
[C언어] math.h 함수 sqrt(), pow(), abs(), fabs(), fabsf() (0) | 2020.08.09 |