(C언어 기초) 14. 포인터의 이해 포인터를 완전히 이해하지 못하면 C언어를 사용할 수 없습니다. 아주 단호하죠? 그만큼 포인터는 정말 중요합니다. 앞으로도 계속 마주하게 될 코드들과 친해지기 위해서는 포인터를 완벽하게 이해하는 것이 필요합니다. 포인터는 언제든지 다른 주소를 저장하거나, 서로간의 대입이 가능합니다. 그러나 일반 변수와는 달리 대입 연산에 엄격한 기준이 적용됩니다. 위 3가지 특징을 잘 기억하면서 포인터에 대해서 더 깊이 알아보도록 하겠습니다. 주소와 포인터의 차이 주소는 변수에 할당된 메모리 저장 공간의 시작 주소 값 자체이고, 포인터는 그 값을 저장하는 또 다른 메모리 공간입니다. 변수의 주소 값은 바뀔 수 없지만, 포인터는 다른 주소를 대입하여서 그 값을 바꿀 수 있습니다. 다음 예시들을 살펴봅시다. int a, b;.. 2023. 11. 5. (C언어 기초) 14. 포인터 변수의 저장공간 지금까지 변수의 선언으로 메모리에 공간을 확보하고, 그곳을 데이터를 넣고 꺼내 쓰는 공간으로 사용했습니다. 변수명은 그런 메모리 공간을 식별할 수 있는 이름이라고 할 수 있습니다. 그러나 우리는 그 변수를 선언된 블록 안에서, 함수의 범위 안에서만 사용할 수 있었습니다. 같은 변수명을 사용한다고 하더라고 블록이나 함수가 다르면 언제나 다음과 같이 별도의 저장 공간을 확보하는 것이 필요했었습니다. int main(void) { int a; } int new_func(void) { int a; } //두 a는 각각 다른 변수로 지정된다. 포인터는 바로 이런 불편함을 해결하기 위해 사용됩니다. 사용 범위를 벗어난 경우에도 데이터를 공유할 수 있게 도와주는 포인터에 대해서 알아보도록 하겠습니다... 2023. 11. 5. (C언어 기초) 13. 배열(2) 문자를 저장하는 배열 메모리에 문자를 순서에 맞게 연속으로 저장하기 때문에 결국 순서를 다루는 배열은 주로 문자열을 저장하는 데 가장 많이 사용됩니다. 모든 알파벳 문자는 한 바이트로 충분히 사용될 수 있으니 char형 배열을 사용하는 것이 좋습니다. char형 배열을 선언할 때 꼭 기억해야 할 점은 저장할 문자열의 길이보다 최소한 하나 이상 크게 배열을 선언해야 한다는 것입니다. 예를 들어 문자열 "apple"을 저장할 배열은 배열 요소 개수가 최소한 6개 이상이어야 합니다. a p p l e 이 여분의 공간이 필요한 이유는 널 문자(\0)를 저장하기 위해서입니다. 널 문자의 기능은 다음 예제를 통해 확인해보겠습니다. #include int main(void) { char str[80] = "apple.. 2023. 9. 10. (C언어 기초) 12. 배열 지금까지 메모리에 저장 공간을 확보할 때 변수를 선언했었습니다. 예를 들어 5개 과목의 점수를 처리하고 싶다고 가정해봅시다. int kor, matth, eng, social, science; 이렇게 하나씩 따로 선언하면 점수도 일일이 하나씩 넣어줘야 합니다. 즉 이름이 별도로 존재하기에 반복문 사용이 불가능합니다. 그래서 우리는 같은 형태의 많은 데이터를 반복문으로 처리하기 위해서 메모리에 연속적으로 저장해놓고 쪼개서 사용하는 방법을 사용합니다. 이를 배열이라고 합니다. 배열 선언은 간단합니다. 요소의 자료형에 이름을 붙이고 필요한 요소의 개수를 표시합니다. int형의 요소가 5개인 배열을 선언하는 예는 다음과 같습니다. int ary[5]; // int = 자료형, ary = 배열명, 5 = 요소 개.. 2023. 9. 3. 이전 1 2 3 4 다음 more