c01 - KimTaebin-ai/study_posts GitHub Wiki

ํฌ์ธํ„ฐ์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋“ฑ์„ ๋‹ค๋ฃจ๋Š” ๋ฌธ์ œ

ex00

#include <unistd.h>

void	ft_ft(int *nbr)
{
	*nbr = 42;
}

main ํ•จ์ˆ˜์—์„œ ํ…Œ์ŠคํŠธ์ฝ”๋“œ ์‚ฌ์šฉ์‹œ ํ•ด๋‹น ํ•จ์ˆ˜์˜ ์ธ์ž๊ฐ’ ์ „๋‹ฌ์—์„  & ๋กœ ์ฃผ์†Œ๊ฐ’์„ ์ „๋‹ฌํ•ด์•ผํ•จ

ํฌ์ธํ„ฐ ๋‚˜์˜จ๋‹ค๊ณ  ์ซ„์ง€๋ง์ž..! ์–ด๋ ค์šด ๊ฑฐ ํ•˜๋‚˜๋„ ์—†๋”๋ผ

ex01

#include <unistd.h>

void	ft_ultimate_ft(int *********nbr)
{
	*********nbr = 42;
}

์ฒ˜์Œ ๋ฌธ์ œ๋ฅผ ๋ณด๊ณ  ๋‹นํ™ฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์•ž์„œ ๋งํ–ˆ๋‹ค์‹œํ”ผ ์ซ„์ง€๋ง๊ณ  ์นจ์ฐฉํ•˜๊ฒŒ ๋ฌธ์ œ๋ฅผ ๋“ค์—ฌ๋‹ค๋ณด์ž. ๊ทธ์ € ๋‹ค์ค‘ ํฌ์ธํ„ฐ์˜ ๋™์ž‘ ๋ฐฉ์‹ ์ดํ•ด๋ฅผ ์š”๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค

ptr1 = 123

*ptr2 = &ptr1

**ptr3 = &ptr2

.

.

.

์ด ๋ฌธ์ œ๋Š” 9์ค‘ ํฌ์ธํ„ฐ๊ธฐ ๋•Œ๋ฌธ์— ์œ„์— ptr์ด 9๊นŒ์ง€ ๊ฐ€์•ผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค.

ex02

void	ft_swap(int *a, int *b)
{
	int	temp;

	temp = *a;
	*a = *b;
	*b = temp;
}

ํฌ์ธํ„ฐ๋ฅผ ๋†“์น˜์ง€ ์•Š๋Š”๊ฒŒ ์ค‘์š”

๋ฌธ์ œ๋ฅผ ์ข€ ํ’€์–ด๋ณด๋‹ˆ ์Šฌ์Šฌ ์ด ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด ๊ฐ์ด ์˜จ๋‹ค. ์ด์ œ ์ด๋Ÿฐ ์œ ํ˜•์˜ ๋ฌธ์ œ๋Š” ๋’ค์—์„œ ๋ฌด์กฐ๊ฑด ์žฌํ™œ์šฉํ• ๊ฑฐ๋‹ค.

์ด๋ฒˆ ํ•œ ๋ฒˆ์— ์™„๋ฒฝํžˆ ์ดํ•ดํ•˜๊ณ  ๋„˜์–ด๊ฐ€์ž.

ex03

#include <unistd.h>

void	ft_div_mod(int a, int b, int *div, int *mod)
{
	*div = a / b;
	*mod = a % b;
}

ex04

void	ft_ultimate_div_mod(int *a, int *b)
{
	int	temp1;
	int	temp2;

	temp1 = *a / *b;
	temp2 = *a % *b;
	*a = temp1;
	*b = temp2;
}

ex05

#include <unistd.h>

void	ft_putstr(char *str)
{
	int	i;

	i = 0;
	while (str[i] != '\0')
	{
		write(1, &str[i], 1);
		i++;
	}
}

char ์ž๋ฃŒํ˜•์€ 1๋ฐ”์ดํŠธ์ด๋‹ค. ๋”ฐ๋ผ์„œ '๋ฌธ์ž' ํ•œ ๊ธ€์ž๋งŒ ์ €์žฅ์ด ๊ฐ€๋Šฅํ•จ

๊ทธ๋Ÿฌ๋‚˜ ๋ฌธ์ œ ์š”๊ตฌ์‚ฌํ•ญ์ธ '๋ฌธ์ž์—ด'์˜ ํฌ๊ธฐ๋Š” 1๋ฐ”์ดํŠธ๋ฅผ ๋„˜์–ด์„ ๋‹ค char ์ž๋ฃŒํ˜•์— ์ €์žฅํ•  ์ˆ˜ ์—†๋‹ค

๊ทธ๋ ‡๋‹ค๋ฉด c์–ธ์–ด์—์„œ ๋ฌธ์ž์—ด์€ ์–ด๋–ป๊ฒŒ ์ €์žฅํ•˜๋‚˜?

๋ฌธ์ž์—ด์€ char ๋ณ€์ˆ˜์— ๊ทธ๋Œ€๋กœ ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ํฌ์ธํ„ฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ €์žฅํ•œ๋‹ค

๋˜ํ•œ c์–ธ์–ด์˜ ๋ฌธ์ž์—ด์€ ๋งˆ์ง€๋ง‰์— ํ•ญ์ƒ ๋„๋ฌธ์ž๊ฐ€ ๋œ๋‹ค (๋ฌธ์ž์—ด์˜ ๋์„ ์˜๋ฏธํ•œ๋‹ค)

๋”ฐ๋ผ์„œ char * ๋กœ ๋ฌธ์ž์—ด์„ ์ €์žฅ

๋ฌธ์ž์—ด์˜ ๋๊นŒ์ง€ ๋ฐ˜๋ณต๋ฌธ ๋Œ๋ฆฌ๊ธฐ

ex06

#include <unistd.h>

int	ft_strlen(char *str)
{
	int	i;

	i = 0;
	while (str[i] != '\0')
	{
		i++;
	}
	return (i);
}

๊ฐœ์ธ์ ์œผ๋กœ ์ „ ๋ฌธ์ œ์˜ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œ๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ธด ํ•จ

str i ๋กœ ์กฐ๊ฑด๋ฌธ ๋Œ๋ฆฌ๊ณ  i++ ์„ ์ „์—ญ๋ณ€์ˆ˜์˜ ๋‹ด์•„ ์กฐ๊ฑด๋ฌธ ๋๋‚ด๊ณ  ๋‚˜์„œ ๋ฆฌํ„ดํ•ด์ฃผ๋ฉด ๊ทธ๊ฒŒ count ๊ฐ’์ž„

๋”ฑ ๋ณด๋‹ˆ๊นŒ 05, 06๋ฒˆ์ด ์ด๋ฒˆ ๊ณผ์ œ์˜ ํ•ต์‹ฌ์ด ๋  ๊ฒƒ ๊ฐ™๋‹ค. ์ ˆ๋Œ€๋กœ ๋ฌธ์ž์—ด์— ๋Œ€ํ•ด ์žŠ์ง€๋งˆ

ex07

#include <unistd.h>

void	ft_rev_int_tab(int *tab, int size)
{
	int	temp;
	int	i;

	i = 0;
	while (i < size / 2)
	{
		temp = tab[i];
		tab[i] = tab[size - 1 - i];
		tab[size - 1 - i] = temp;
		i++;
	}
}

ํ’€์ด๋ฅผ ํ•˜๊ธด ํ–ˆ๋Š”๋ฐ ์ œ์ถœํ•˜๊ณ  ๋ณด๋‹ˆ c00๋ฒˆ์—์„œ ์‚ฌ์šฉํ–ˆ๋˜ swap ํ•จ์ˆ˜๋ฅผ ์žฌ์‚ฌ์šฉํ–ˆ์œผ๋ฉด ์–ด๋• ์„๊ฐ€ ํ•˜๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค.

ex08

#include <unistd.h>

void	ft_sort_int_tab(int *tab, int size)
{
	int	temp;
	int	i;
	int	j;

	i = 0;
	while (i < size)
	{
		j = 0;
		while (j < size)
		{
			if (tab[i] < tab[j])
			{
				temp = tab[i];
				tab[i] = tab[j];
				tab[j] = temp;
			}
			j++;
		}
		i++;
	}
}

์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (๋ฒ„๋ธ”, ์„ ํƒ, ์‚ฝ์ž…) ์ค‘ ๊ณจ๋ผ์„œ ํ•ด๊ฒฐํ•˜๋ฉด ๋จ

๋‚œ ๋ฒ„๋ธ” ์ •๋ ฌ๋กœ ํ•ด๊ฒฐํ•จ. ์ •๋ ฌ์— ๋Œ€ํ•ด์„œ ๊ณ ๋ฏผํ•˜๊ธฐ ์ „์— ์†์ด ๋จผ์ € ์›€์ง์—ฌ๋ฒ„๋ฆผ..

โš ๏ธ **GitHub.com Fallback** โš ๏ธ