공부하자/C언어 31

C언어 문법 공부 8장 [포인터 사용 용도]

7. 포인터 사용 용도지금까지 포인터에 대해 배웠습니다.그런데 이 포인터를 과연 어디에 써먹을수 있을까요? 저번 강좌에서 일반 변수를 함수 호출시 인수로 전해주면단지 변수에 들어있는 값을 복사해서 전해주는 Passing by value라는 호출 방법을 쓴다는 것을 배웠습니다. 그리고 배열의 경우 그 주소를 전해 주는 Passing by reference라는 방법을 쓴다는 것도 알았죠.그럼 일반 변수를 Passing by reference로 전해 줄수는 없을까요? 포인터를 이용하면 이것이 가능합니다. 우선 방법을 알아보기 전에 예제 하나를 보죠. /* 파일 이름 : C9-2.C프로그램 내용 : 포인터 예제. */ #include void func(int data){data=10;} void main(){ ..

C언어 문법 공부 8장 [포인터의 배열]

6. 포인터의 배열 포인터를 배열로 만들수가 있을까요? 당연히 할수 있겠죠? C로는 못하는게 없으니.. 포인터의 배열을 만드는 것은 정말 쉽습니다. 일반 변수의 배열에 대해서는 배웠는데 그거랑 똑같이 하면 되지만 단지 데이터형태와 포인터배열명 사이에 *를 넣어 주면 되죠. 그러니까 데이터형태* 포인터배열명[크기]; 이렇게 해 주면 됩니다. 예를 들어 정수 형태의 변수의 주소를 저장하는 10개의 원소를 가진 포인터배열은 int* PointerArray[10]; 이렇게 선언하죠. 2차원 배열 역시 일반 배열과 똑같지만 단지 *만 넣어 주면 되죠. 그러니까 int* PointerArray[10][10]; 이런 식으로 해 주면 되죠. 그리고 3차원 배열은 int* PointerArray[10][10][10]; ..

C언어 문법 공부 8장 [다시 한 번 포인터에 대해 정리]

5. 다시 한 번 포인터에 대해 정리 포인터에 대해 다시한번 정리를 해 보죠.우선 포인터는 변수이고, 변수 중에서도 주소를 기억시키는 변수 입니다. 포인터 선언은 데이터형태* 포인터명; 이렇게 해 주면 되고, 여기서 데이터형태는 그 포인터가 어떤 형태의 변수의 주소를 넣는 것인지를 지정하는 것이었죠? 다음으로 포인터 연산자에는 주소 연산자(&)와, 참조 연산자(*)가 있는데, 주소 연산자는 어떤 변수의 실제 주소를 얻고자 할때 사용하는 것으로 주소를 얻고자 하는 변수 앞에 붙여 주기만 하면 되고요. 참조 연산자는 포인터에 저장되어 있는 주소에 기억되어 있는 데이터를 변경시키거나 사용할때 쓰는 것으로, 포인터의 앞에 붙여 주기만 하면 됩니다. 예를 들어 int Variable; int* Pointer; 이..

C언어 문법 공부 8장 [포인터에 초기값 설정]

4. 포인터에 초기값 설정 변수는 선언시에 초기값을 줄수 있었죠?그런데 포인터도 변수이므로 당연히 초기값을 줄수 있겠죠? 포인터에 초기값을 주는 방법은 일반 변수와 똑같습니다. 그러니까 int* Pointer=1; 이렇게 하면 1이라는 주소를 초기값으로 준 것이죠. 그런데 뭔가 이상하죠? 주소는 자기 마음데로 정하는게 아니거든요. 그래서 저렇게 선언하는 사람을 '바보'라고 하죠. 일반적으로 포인터에 초기값을 줄 때는 데이터형 변수; 데이터형* 포인터이름 = &변수; 이렇게 합니다. 우선 변수를 선언하고 그 변수의 주소를 초기값으로 주는 것이죠. 예를 들어 int Variable; int* Pointer=&Variable; 이렇게 하면 Variable라는 변수의 주소가 Pointer라는 포인터에 초기값으로..

C언어 문법 공부 8장 [포인터 연산자]

3. 포인터 연산자 C언어 에서는 포인터 사용시에 사용하는 연산자가 2가지가 있습니다. 그 두가지는 기존의 비트별 논리곱 연산자인 &와 곱셈 연산자인 *입니다.포인터 연산자로 쓰일때 &는 주소 연산자라고 하고, *는 참조 연산자라고 합니다. (1) 주소 연산자주소 연산자란 어떤 변수의 주소를 얻는 연산자를 말합니다.사용법은 주소를 얻고자 하는 변수의 앞에 &를 붙여 주기만 하면 됩니다. 그러니까 포인터 = &변수; 이렇게 하면 변수의 주소가 포인터에 들어가죠. 예를 들어 int Variable=10;int *Pointer; 이렇게 두 변수를 선언했다고 할때, Pointer = &Variable; 이렇게 해 주면 Variable라는 변수의 주소가 Pointer라는 변수로 들어갑니다. 이것을 실제 메모리 상..

C언어 문법 공부 8장 [포인터는 어떻게 선언하는가]

2. 포인터는 어떻게 선언하는가 변수는 사용전에 선언을 해 주어야 합니다.포인터 역시 변수 이므로 선언을 해 주어야 하겠죠? 포인터의 선언은 다음과 같이 합니다. 데이터형태* 포인터이름; 아까 포인터는 주소를 기억시키는 변수라고 했습니다. 그런데 주소에도 종류가 있죠? 정수 형태 변수의 주소, 문자 형태 변수의 주소 등등..이런 어떤 형태의 주소인지를 지정해 주는 것이 데이터형태 입니다.만약 주소의 형태가 특별히 정해져 있지 않았다면 void를 씀니다. void를 써서 포인터를 선언하면 어떤 형태의 주소든지 넣을수 있죠.그리고 *는 그 변수가 포인터임을 알리기 위해 써 주는 것이고, 포인터이름은 그 포인터를 상징하는 심볼입니다. 예를 들어 정수 형태의 변수의 주소를 넣는 포인터는 int* Pointer;..

C언어 문법 공부 8장 [포인터란]

1. 포인터란? 포인터의 정확한 이름은 '포인터형 변수' 입니다. 그냥 줄여서 포인터라고 하는 것이죠. 그럼 여기서 포인터는 변수라는걸 아셨겠죠? 변수에는 정수 형태, 장정수, 부동 소숫점 수, 문자 형태 등등이 있습니다. 그럼 포인터는 도대체 어떤 형태 일까요?포인터는 바로 주소 형태 입니다. 그러니까 정수도 아니고,문자도 아닌 메모리의 주소를 기억시키는 변수라는 것이죠. 포인터는 변수이고, 변수 중에서도 주소를 기억시키기 위한 변수라는 것을 꼭 기억해 두시면 다음은 잘 이해가 되실 겁니다.

C언어 문법 공부 7장 [for문]

3. for문 for문은 어떤 특정 부분을 반복해서 실행할때 사용합니다.for문의 사용법은 for(수식1;조건;수식2){문장들..} 이런 구조 입니다. 수식1은 for문일 시작하기 전 한번 실행하는 것으로 보통 카운터 변수를 초기화 할때 씁니다.그리고 수식2는 for문 내의 문장들을 반복해서 실행할때마다 한번씩 실행해 주는 수식으로 보통 카운터를 증가 시키거나 감소 시킬때 사용합니다. for문은 조건이 만족할때 까지만 {}안의 문장을 반복해 실행해 줌니다.그냥 보면 저걸로 어떻게 반복문을 만들수 있는지 이해가 잘 안 가실 거지만 예제를 보시면 이해가 되실 겁니다. /* 파일 이름 : C7-11.C프로그램 내용 : for문 예제. */ #include void main(){ int i; for(i=1;i

C언어 문법 공부 7장 [switch문]

이번 강좌에서는 프로그램 흐름제어에 대해 알아보겠습니다.프로그램 흐름 제어란 실제 프로그램에서 가장 중요한 부분으로 어떤 조건이 만족될때 어떤 부분을 실행하거나 어떤 특정 부분을 반복하는 기능을 수행하도록 프로그램의 흐름을 제어하는 것을 말합니다. C에서는 프로그램 흐름 제어를 위해 많은 방법을 제공합니다. 그럼 그것들을 하나씩 알아보죠. 2. switch문 이번엔 switch문에 대해 알아 보죠.switch문은 어떤 특정한 변수 또는 식의 값에 따라 특정 부분을 실행하는 것 입니다.기본적인 사용법은 switch(식){ case 값A: break; case 값B: break;} 이렇습니다. 여기서 식에는 상수, 변수, 수식 어느것도 다 들어갈수 있습니다.만약 식의 값이 값A이면 case 값A:에서 bre..

C언어 문법 공부 7장 [if문]

1. if문 프로그램을 만들다 보면어떤 조건이 만족되면 특정 부분을 실행하고 그렇지 않으면 또다른 특정 부분을 실행해야 하는 등의 구조가 필요할때가 있습니다. 이때는 if문을 사용하면 됩니다.if문은 어떤 조건이 만족 되면 특정 부분을 실행하는 기능을 합니다.그럼 자세히 알아보죠. (1) C언어 에서 참과 거짓if문을 배우기 전에 한가지 알아 둘 것이 있습니다.C에서 참과 거짓의 구분을 어떻게 하는지 알아야 하거든요.저번 관계형 연산자에서 참은 1 거짓은 0을 돌려준다고 했습니다.그럼 참과 거짓은 1과 0으로만 구분할까요?그렇지 않습니다. C에서 0이 아닌 모든 값은 참으로 인식하고, 0만 거짓으로 인식합니다.지금은 별로 중요하지 않게 보여도 if문에서 정말 중요한 것 입니다. (2) if문그럼 이제 i..