오름차순으로 배열 나열

쿵ㅇ양·2023년 8월 16일

알고리즘

목록 보기
10/18

오름차순

반복문, 배열, 예외처리

반복문 끝나고 초기화해주기

배열: 자료형이 같은 변수를 연속으로 메모리에 할당한 것
배열요소들은 일정한 간격으로 주소를 가지고 있음
ary = &ary
ary + 1 = &ary[1]
*(ary + 1) = ary[1]

배열명은 주소 --> 포인터에 저장 가능

함수로 베열을 처리하려면 포인터 필요
배열명 ary는 첫번째 배열요소의 주소인데 이 주소값을 인수로 주면 함수는 이 값을 받아 주소 계산을 통해 모든 배열 요소 사용가능
배열명을 받을 함수의 매개변수 자리에 포인터 필요
(주소를 저장할 포인터 필요하기 때문!)

함수를 호출할때는 배열명 / 함수의 매개변수로는 포인터

*배열명 vs 포인터
1. sizeof 연산 결과 다름
sizeof(ary) = 배열 전체 크기, 12
sizeof(pa) = 포인터 하나의 크기 ,4
2. 변수, 상수의 차이
포인터 = 변수 / 배열 = 상수

간접참조 연산자와 전위표현 함께 사용x
*(++pa) 는 pa의 값이 먼저 증가된 후에 증가된 pa가 가리키는 배열요소를 간접참조하므로 두번째 배열 요소부터 출력
따라서 마지막 출력되는 값은 쓰레기값

#include<unistd.h>

void	ft_print(char arr[3])
{
	write(1, arr, 3); 👌배열명은 주소이므로 &생략!
	if (!(arr[0] == '7' && arr[1] == '8' && arr[2] == '9'))
	{
		write(1, ",", 1);
		write(1, " ", 1);
	}
}

void	ft_print_comb(void)
{
	char	arr[3];

	arr[0] = '0';
	arr[1] = '1';
	arr[2] = '2';
	while (arr[0] <= '7')
	{
		while (arr[1] <= '8')
		{
			while (arr[2] <= '9')
			{
				ft_print(arr);
				arr[2]++;
			}
			arr[1]++;
			arr[2] = arr[1] + 1; ✨초기화
		}
		arr[0]++;
		arr[1] = arr[0]; ✨초기화
	}
}
profile
개발을 공부하고 있는 대학생

0개의 댓글