본문 바로가기

배열

(2)
function - 포인터 인자, 배열 인자 포인터를 배우면서 포인터가 어디에 쓰이는지에 대한 의문이 많이 들었다. 그래서 이번엔 함수에서 포인터를 어떻게 사용하는지에 대해서 공부할 것이다. 먼저, 단순한 형태의 함수의 예를 들어보자. #include void val_test_f(int i) { i = 20; } int main() { int i = 10; val_test_f(i); printf("함수 호출 후 i값 : %d ", i); return 0; } 위의 예와 같이 return을 사용하지 않고 main 함수에서 정의한 i의 값을 피호출 된 함수(val_test_f)에서 바꿀 수 없다. 조금 더 구체적으로 C언어의 메모리 구조를 통해서 이해해보자. 메모리 구조 프로그램을 실행시키기 위해서 메모리 공간이 필요한데 스택(Stack), 힙(Hea..
포인터의 이해(2) - 상수 포인터, 포인터의 덧셈과 뺄셈, 배열과 포인터의 관계, [] 연산자 상수포인터 const 키워드를 붙여 데이터를 상수(바뀌지 않은 값)로 만들 수 있다. 포인터 또한, const 키워드를 붙여 상수로 만들 수 있다. 예를 들어보며 이해해보자 #include int main() { int a; int b; const int* p = &a; p = &b; //올바른 문장 *p = 3; //올바르지 않은 문장 return 0; } 다음 예시는 컴파일을 했을 경우 에러가 난다. const int* 의 의미는 const int 형 변수를 가리킨다는 의미가 아니고, int 형 변수를 가리키는데 그 값을 절대로 바꾸지 말라는 의미이다. 즉, p는 int형 변수를 가리키고 있고 const가 붙어있어서 p가 가리키는 변수의 값이 바뀌면 안되는 것이다. 여기서 변수 a는 값이 자유롭게 바..