알고리즘 문제를 요즘 안 풀어서 그런지 몰라도 달팽이 배열을 풀지 못했다. 구글링해서 코드를 한 번 보고 이해해서 다시 풀었다. #include int main(void) { int len; //입력받는 배열의 길이 int num; //배열의 요소(1,2,3~~) int arr[50][50]; //입력할 배열 int i, j; int x, y; //배열의 행,열 int t; //가로,세로가 각각 커졌다가 작아지는 걸 t에 부호를 붙여서 이용 int jmax; //열의 최대값 printf("달팽이 배열의 길이를 입력해라"); scanf_s("%d", &len); num = 1; jmax = len; x = 0, y = -1; t = 1; while (0 < jmax) { for (i = 0; i < jma..
다차원 배열 int arr[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int arr[3][3]={1,2,3,4,5,6,7,8,8}; 포인터의 포인터 이중 포인터 or 더블 포인터 : 포인터의 포인터, 변수를 가리키는 또 다른 포인터 변수 int main(void){ double num=3.14; double * ptr=# double ** dptr=&ptr; *dptr=... // *dptr은 포인터 변수 ptr을 의미 *(*dptr)=... // *(*dptr)은 변수 num을 의미 } ptr은 주소고(함수에 전달할땐 주소가 복사되서 ptr값 바꿀 수 없어. &ptr로 전달해야돼) *ptr은 변수 num 다중 포인터 변수 : *연산자 2개이상 int main(void) { int..
포인터는 c언어가 Low 레벨 언어의 특성을 지닌다고 이야기하게 만든 장본인이다. 왜냐하면 포인터를 이용하면 메모리에 직접 접근이 가능하기 때문이다. 포인터 변수란 메모리의 주소 값을 저장하기 위한 변수이다. 포인터 변수의 크기는 64비트에서는 8바이트(=64비트 시스템에서는 주소 값을 64비트로 표현하니까), 32비트에서는 4바이트 int num=7; int * pnum; // 포인터 변수 pnum의 선언 pnum = # // num의 주소 값을 포인터 변수 pnum에 저장(변수만 저장가능, 상수x) 변수의 주소 값을 반환하는 & 연산자 포인터가 가리키는 메모리를 참조하는 * 연산자 다양한 포인터 형이 존재하는 이유 : 포인터 형은 메모리 공간을 참조하는 기준이 된다.(형의 일치) 포인터 변수의..
이전에도 알고리즘 문제를 풀 때 최대공약수, 최소공배수를 구하는 문제가 많이 나왔다. c언어를 공부하던 중 또 나와서 글을 올리게 됬다. 우리는 수학과가 아니므로 증명을 할 필요는 없다(대수학에서 배웠다 나는 수학과라서..) 최대공약수 int gcd(int a, int b) { return b ? gcd(b, a%b) : a; } ㅣ function gcd(n1, n2) { return n1%n2 ? gcd(n2, n1%n2) : n2; } 최소공배수 a * b / gcd(a,b)
연산자 sizeof : 자료형의 크기 확인가능 정수형 일반적으로 CPU가 처리하기에 가장 적합한 크기의 정수 자료형을 int로 정의한다. 따라서 int형 연산의 속도가 다른 자료형의 연산속도에 비해서 동일하거나 더 빠르다. char, short는 데이터의 양이 많아서 연산속도보다 데이터의 크기를 줄이는 것이 더 중요한 데이터 인 경우에 사용 실수형 보편적으로 선택하는 자료형 : double(과거에는 float) unsigned를 붙여서 0과 양의 정수만 표현하게 할 수 있다.(부호비트를 크기 비트로 변경)(양의 정수 2배) signed는 default값 (char는 예외일 수도 있어.) 아스키(ASCII) 코드 문자, 특수문자를 숫자로 표현(총 128개) 리터럴 상수 : 변수와 달리 이름이 없는 상수 i..