Language&Framework&Etc112 포인터와 함수에 대한 이해(14-1) 함수의 인자로 배열 전달하기 인자전달의 기본방식은 값의 복사이다 - "함수호출 시 전달되는 인자의 값은 매개변수에 복사가 된다" - 위 문장에서 가장 중요한 단어는 '복사'이다. - 즉, 복사가 되는 것 뿐이기 때문에 함수가 호출되고 나면, 전달되는 인자와 매개변수는 별개가 된다. int simplefunc(int num){......} int main(void) { int age=17; simplefunc(age); // age에 저장된 값이 매개변수 num에 복사됨 } - 위 코드의 simplefunc 함수 호출을 통해서 인자로 age를 전달하고 있음. But.. - "실제로 전달되는 것은 age가 아닌, age에 저장된 값임" - 그리고 그 값이 매개변수 num에 복사되는 것. - age와 num은 값을 주고받은 사이일 뿐 그.. 2020. 12. 8. 포인터와 배열! 함께 이해하기(13-4) 포인터 변수로 이뤄진 배열: 포인터 배열 포인터 배열의 이해 포인터 변수로 이뤄진, 그래서 주소 값의 저장이 가능한 배열을 가리켜 '포인터 배열'이라 한다. 이러한 배열의 선언방식은 다음과 같다. int* arr1[20]; // 길이가 20인 int형 포인터 배열 arr1 double* arr2[30]; // 길이가 30인 double형 포인터 배열 arr2 포인터 배열의 선언방식은 기본 자료형 배열의 선언방식과 동일하다. 배열의 이름 앞에 배열요소의 자료형 정보를 선언 #include int main(void) { int num1 = 10, num2 = 20, num3 = 20; int* arr[3] = { &num1, &num2, &num3 }; printf("%d \n", *arr[0]); printf("%d \n", *arr[1]); p.. 2020. 12. 8. 포인터와 배열! 함께 이해하기(13-3) 상수 형태의 문자열을 가리키는 포인터 두 가지 형태의 문자열 표현 1. 배열을 기반으로 하는 '변수 형태의 문자열' 선언 char str1[] = "Hello"; → 배열 길이 자동 계산 2. 포인터 기반으로 문자열 선언 char* str2 = "No thanks"; 2와 같이 선언하면 메모리 공간에 문자열 "No thanks"이 저장 문자열의 첫 번째 문자 N의 주소값이 반환. 그 반환 값이 포인터 변수 str2에 저장. str2를 char형 포인터로 선언. 그렇다면 위의 두 문자열 선언의 차이점? [str1] 은 그 자체로 문자열 전체를 저장하는 배열, [str2] 는 메모리상에 자동으로 저장된 문자열 "Your String"의 첫 번째 문자를 단순히 가리키고만 있는 포인터 변수 다만 배열 이름 str1이 의미하는 것도 실제로는 문자 M.. 2020. 12. 8. 포인터와 배열! 함께 이해하기(13-2) 포인터 연산 포인터를 대상으로 메모리의 접근을 위한 * 이외에 증가 및 감소연산도 가능하다. 중요한 것은 증가 및 감소연산이 가능하다는 사실이 아님 → 중요한 것은 연산의 결과 포인터를 대상으로 하는 증가 및 감소연산 포인터 변수를 대상으로 다음과 같이 증가 및 감소 연산 진행 가능 예제 #include int main(void) { int* ptr1 = 0x0010; double* ptr2 = 0x0010; printf("ptr1 = %p\n", ptr1); printf("ptr1+1 = %p\n", ptr1+1); // 4 증가 printf("ptr1+2 = %p\n", ptr1+2); // 8 증가 printf("ptr2 = %p\n", ptr2); printf("ptr2+1 = %p\n", ptr2 + 1);.. 2020. 12. 8. 이전 1 ··· 20 21 22 23 24 25 26 ··· 28 다음