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
- 와인선별방법
- get_next_line
- 포르투갈 여행
- 이지젯
- 지베르니 여름
- 파리 피크닉
- 알고리즘 기초
- ecole42
- 에꼴42
- so_long
- libft
- printf
- pipex 42
- 42 libft
- 42 pipex
- str함수
- 42
- push swap 설명
- ft_printf
- 서울42
- get next line
- 지베르니 계절 추천
- 지베르니
- 와인 고르기
- pipex
- push swap
- 굿노트 스티커
- 지베르니 가을
- gnl
- 42 so_long
Archives
- Today
- Total
뇌 마음 반반저장소
[42]void 함수인데 return 값이 가능하다구? 본문
728x90
위의 함수를 살펴보다가 void함수가 return값을 포함하고 있는 것을 보았다. 그래서 어떻게 void함수가 return값을 줄 수 있는지 궁금해서 찾아봤다.
그냥 void는 아얘 텅 빈 값이다. 그래서 libft의 fd 함수들을 만들 때 print를 목적으로 루프를 돌려주고 리턴값이 없는 함수를 아래와 같이 만들었다. 때때로 이렇게 리턴이 필요 없는 간단하고 깔끔한 함수들이 필요하다.
void ft_putchar_fd(char c, int fd)
{
write(fd, &c, 1);
}
하지만! void에 포인터를 붙여 준다면 어떻게 될까? 포인터는 자리를 맡아주기 때문에 void*라도 자동적으로 8바이트의 주소를 위한 공간을 설정해 준다. void의 타입 자체도 텅 비어 있기 때문에 아무 타입이나 넣어 줄 수 있다!
그래서 void pointer는 메모리 주소를 가리킬 수 있는 아주 유용한 주소 저장고가 된다.
아래의 예를보자!
#include <stdio.h>
void *void_pointer(char *str)
{
return((char *)str);
}
int main (void)
{
char *a;
a = void_pointer("Hello_world");
printf("void_pointer : %s\n", a);
return (0);
}
void 포인터에 리턴값을 주고 a에게 그 주소를 가리키도록 한다. 그러면 결과는?
$ ./a.out
void_pointer : Hello_world
728x90
'좌뇌 > 왕초보의 컴퓨터 언어 세계' 카테고리의 다른 글
자료구조 (Data Structure) 기본 이해하기 (0) | 2023.01.18 |
---|---|
[42] valgrind로 메모리 누수 찾기 (0) | 2023.01.10 |
[42] const char의 *위치에 따른 다른 의미 (0) | 2023.01.05 |
[42] argc, argv 거 어떻게 쓰는 겁니까? (0) | 2022.12.04 |
[42] NULL과NUL과 Nil과 0과 \0.... (0) | 2022.12.03 |
Comments