Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- ML
- pyTorch
- Machine Learning
- anaconda오류
- Ai
- conda: command not found
- conda
- torch
- essential deep learning paper reading
- 머신러닝
- 텐서
- pytorch tensor
- 공부
- 리눅스 오류
- 일귀
- conda오류
- stm32f 시리즈를 이용한 arm cortex-m3/m4 구조와 응용
- 리눅스
- Tensor
Archives
- Today
- Total
Embedded World
[C] void* 포인터 본문
전문가를 위한 C 책을 보다가, 다음과 같은 함수를 만났다.
void* thread_body(void* arg){
printf("Hello from first thread!");
return NULL;
}
음... 이전에 void형 포인터를 공부한 적이 있었는데 까먹었다.. 이참에 확실히 정리해두고자 한다.
int a = 10;
int* b = &a;
이 코드를 말로 풀어 설명하면 "b는 a의 주소를 저장하는데, 그 주소에는 int형 데이터가 있다." 이다. 맞는 말이다.
int a=10;
void* b=&a;
이번엔 이 코드를 풀어 설명하면 "b는 a의 주소를 저장하는데, 그 주소에는 void형 데이터가 있다." 이다.
그런데... void는 값이 없음을 의미하는 심볼이 아니던가? 컴퓨터는 자료형을 모르기 때문에 아무것도 없는 것처럼 보는 것 이라고 한다.(출처)
이를 다시 표현하면 "b는 a의 주소를 저장하는데, 그 주소에는 알 수 없는 자료형의 데이터가 있다..." 가 된다.
void형 포인터를 사용하려면 원본 변수의 자료형으로 캐스팅을 해주면 된다.
printf("%d", *b); // ERROR!
printf("%d", *(int*)b); // works!
그렇다면 다시,
void* thread_body(void* arg){
printf("Hello from first thread!");
return NULL;
}
는 어떻게 해석하면 될까?
to be continued...
reference https://reakwon.tistory.com/19
'소프트웨어 > C' 카테고리의 다른 글
[C] 헤더파일에 대하여 (0) | 2025.08.02 |
---|---|
[C] C언어의 extern 키워드 (0) | 2025.07.30 |
[C] C의 파일시스템, fopen_s() (0) | 2025.07.24 |
[C] C언어의 조건부 컴파일 지시자(#if #ifdef #ifndef #endif) (0) | 2025.07.17 |
[C] volatile 키워드 (0) | 2025.06.23 |