본문 바로가기

분류 전체보기

함수의 매개변수로 배열 전달 개요 함수의 매개변수로 배열을 전달하는 방법은 변수를 전달하는 방법과는 달라서 헷갈린다. 이번 기회에 확실히 공부하고 넘어가자. 결론부터 말하자면, 함수의 매개변수로 배열을 전달할 때는 call-by-reference 방식 밖에 안된다. call-by-value 방식으로는 전달이 안 된다는 말이다. 왜 그럴까? 변수의 크기는 커봤자 8byte 정도이다. 그걸 계속 복사해서 전달해봤자 메모리에는 큰 영향을 끼치지 않는다. (그래도 무한 루프로 계속 복사하면 큰 영향을 미칠 테니 신경쓰자.) 그런데 만약 크기가 4000byte 인 배열을 계속 복사해서 전달한다면? 금방 메모리가 차버릴 것이다. 그래서 배열은 변수와 다르게 call-by-value 방식으로는 전달할 수 없다. 그래서 방법은 void fnarr..
sprintf 기능 숫자를 문자열로 바꿔서 저장해준다. atoi 의 반대 기능이다. atoi 의 반대 개념으로 itoa 함수도 있는데 희한하게 atoi 는 표준함수인데 itoa 는 표준함수가 아닌 win32api 이다. 그래서 itoa 대신에 표준함수인 sprintf 를 공부해서 써야겠다. 예제 char buf[256] ; int a = 9; sprintf( buf, "Hello %d", a ) ; // Hello 9
strlen 기능 문자열의 길이를 알려줍니다. 예제 #include int main() { char *s1 = "Hello"; // 포인터에 문자열 Hello의 주소 저장 char s2[10] = "Hello"; // 크기가 10인 char형 배열을 선언하고 문자열 할당 printf("%d\n", strlen(s1)); // 5: strlen 함수로 문자열의 길이를 구함 printf("%d\n", strlen(s2)); // 5: strlen 함수로 문자열의 길이를 구함 return 0; }
문자를 숫자로 바꾸기 개요 char 형 문자를 int 형 숫자로 바꿔야 될 때가 있다. 그 방법을 알아보자. 주의사항 : 여기서 다룰 내용은 문자를 숫자로 바꾸는 것이지 문자열을 숫자로 바꾸는 것이 아니다. 문자열을 숫자로 바꾸는 방법은 atoi() 함수를 참고해보자. 문자를 숫자로 바꾸는 방법 #include int main() { char chr = '7'; int a; a = chr - '0'; //문자의 끝에 들어간 'NULL'을 뺀다? printf("%d\n", a); return 0; }
C pointer 포인터 I. 선언, 정의, 접근 int a = 100; int* pA = &a; //포인터의 자료형 int의 의미는 포인터가 가리키는 변수의 자료형이 int란 뜻 printf("%p", &a); //주소출력 printf("%p", pA); //주소출력 printf("%d", *pA); //100출력 *pA = 10; printf("%d", a); //10출력 II. 연산 포인터 연산은 덧셈과 뺄셈만 가능하다. 포인터를 n만큼 증가시키면 (n×타입의 크기)만큼 주소값이 증가한다.