* 개인적인 공부 내용을 기록하는 용도로 작성한 글 이기에 잘못된 내용을 포함하고 있을 수 있습니다. #1 값에 의한 전달 Call-By-Value #2 참조에 의한 전달 Call-By-Reference #1 값에 의한 전달 Call-By-Value Call-By-Value 방식은 인자로 넘기는 값을 "복사"하여 함수에 넘겨주는 방식입니다. 즉, 값의 복사에 의한 함수 호출을 의미합니다. 다음 코드는 main() 함수에서 doSomething 함수로 x의 값 5를 전달해 출력하는 예제입니다. 유의해야 할 점은 x가 직접 전달되는 것이 아닌 x의 값 "5"만이 전달되는 것으로 doSomething 함수의 파라미터 x와 main() 함수의 x는 서로 다른 메모리에 할당되어 있습니다. 따라서, 각 함수에서 x..
char str[] = "novlog" // 문자열 상수 char *str = "novlog" // 불가능 error const char *str = "novlog" // 가능 C++에서 문자열을 초기화 하는 방식은 여러가지가 존재한다. char str[] = "novlog"; 우선 char str[] = "novlog" 와 같이 문자열 리터럴 상수로 배열을 초기화 가능하다. char *str = "novlog" //x char *str = "novlog" 처럼은 문자열을 초기화 할 수 없다. 그 이유는 어찌보면 당연한데, str이 포인터 이기 때문이다. "novlog"는 주소가 아닌 "문자열 리터럴" 이기에, 포인터로 주소가 아닌 리터럴을 가리킬 수 없는 것이다. const char* str = "no..
* 개인적인 공부 내용을 기록하는 용도로 작성한 글 이기에 잘못된 내용을 포함하고 있을 수 있습니다. #1 상수를 가리키는 포인터 - const int *ptr #2 상수 포인터 - int const *ptr #3 상수를 가리키는 상수 포인터 - const int const *ptr const는 변수를 상수화 시킬 때 사용하는 키워드입니다. 포인터도 주소를 저장할 때 사용하는 "자료형" 이기에, 마찬가지로 const 키워드를 사용할 수 있습니다. 단, const 키워드의 위치에 따라 그 기능이 달라집니다. int a = 100; const int *ptr = &a; int const *ptr = &a; const int const *ptr = &a; #1 상수를 가리키는 포인터 - const int *p..
* 개인적인 공부 내용을 기록하는 용도로 작성한 글 이기에 잘못된 내용을 포함하고 있을 수 있습니다. #1 메모리 저장 방식 #2 포인터(Pointer) 연산자 * & #3 포인터가 필요한 이유 #4 포인터 문법 - 포인터 변수 선언 - 널 포인터 #1 메모리 저장 방식 포인터를 공부하기에 앞서 우선 프로그래머가 변수를 선언할 시 데이터가 메모리에 어떤 방식으로 저장되는지에 대해 알아 보도록 합시다. int val = 10; "val 이라는 이름의 int 타입 변수를 선언하고 10을 할당했다." 라는 것은 컴퓨터가 어딘가의 메모리 공간에 4byte 를 할당하고 그 메모리 공간의 이름은 프로그래머가 사용하기 쉽도록 val이라는 명칭을 붙여준 것입니다. cout
* 이번 포스팅 에서는 [C/C++] C언어 방식 문자열 포스팅에서 알아본 문자열 함수들을 직접 구현해 보도록 하겠습니다. * 개인적인 공부 내용을 기록하는 용도로 작성한 글 이기에 잘못된 내용을 포함하고 있을 수 있습니다. #1 strcpy #2 strlen #3 strcmp #4 strcat #1 strcpy /* strcpy - 문자열을 복사해주는 함수 dest 문자열에 src 문자열을 복사합니다. */ void strcpy(char *dest, const char *src){ while(*src != '\0'){ // NULL 문자열 까지 반복 *(dest++) = *(src++); // src의 문자열을 dest로 복사 } *(dest) = '\0'; // dest의 마지막 문자열 NULL로 지..