1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
| #include <stdio.h>
#include <stdint.h>
#include <string.h>
#include <stdlib.h>
void boo(const int32_t* const array);
void boo(const int32_t* const array)
{
int32_t test = 0;
int32_t* const dest1 = (int32_t*) malloc(sizeof(int32_t) * 10U);
int32_t* const source1 = (int32_t*) malloc(sizeof(int32_t) * 10U);
// void* memcpy (void* dest, const void* source, size_t num)
(void) memset(dest1, 0, sizeof(int32_t) * 10U);
(void) memset(source1, 0, sizeof(int32_t) * 10U);
(void) memset(dest2, 0, sizeof(int32_t) * 10U);
(void) memset(source2, 0, sizeof(int32_t) * 10U);
// array 자료형은 const int32_t* const, 값과 주소를 변경할 수 없음
// main 함수 array는 boo 함수에 전달 될 때, const int32_t* const 속성으로 변환됨
// 에러 발생
//array[0] = 1;
//array = &test;
// dest1 자료형은 int32_t* const, 주소를 변경할 수 없음
// dest1는 memcpy 함수에 전달 될 때, void* 속성으로 변환됨
// source1는 memcpy 함수에 전달 될 때, const void* 속성으로 변환됨
//void* memcpy(void* dest, const void* source, size_t num)
(void) memcpy(dest1, source1, sizeof(int32_t) * 10U);
}
int32_t main(void) {
int32_t array[10] = { 0, };
boo(array);
return 0;
}
|
Comments powered by Disqus.