C 배열, 포인터

 

C언어의 배열, 포인터 정리.

1. 배열
2. 포인터
3. 배열과 포인터

배열(Array)

배열의 선언

데이터형 배열명 [요소 수(배열의 크기)]

ex)
int num[10];
char textArray[100];

배열의 선언과 초기화

데이터형 배열명 [요소 수(배열 크기)]={값1, 값2, 값3...값n};

배열의 요소는 0부터 시작된다.
배열의 선언과 초기화를 같이 할 경우 배열의 크기는 생략이 가능하다.

ex1) 각각 따로 값을 넣을 수도 있고 한꺼번에 넣을 수도 있다.
int num[0] = 1;
int num[1] = 2;

int num[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

char textArray[100] =
{
     'A', 'r', 'r', 'a', 'y',
     'T', 'e', 's', 't'
};

char textArray[11] = {"Array Test"};

int textArray2[] = { 1. 3, 5, 7, 9, 11, 13, 15 };
ex2)
#include<stdio.h>

void main(void){

     char textTest[4] = {'T', 'e', 's', 't'};
     char textTest2[] = {"Text Array Test"};
     /* 2종류의 character형 배열 선언과 초기화 */

     for(int i=0; i <= 4; i++){
          printf("%c", textTest[0 + i]);
     }
     printf("\n");
     printf("%s\n", textTest2);
} /* 값은 Test
                  Text Array Test */
// 문자열 배열의 경우 2번째 textTest2 방법이 단연 편하다.

포인터(Pointer)

포인터 변수의 선언

데이터형 *변수명;
데이터형* 변수명;

ex)
int *num;
char *pointer;

포인터 변수의 사용

ex)
#include<stdio.h>

main(){
    int numvar;   /* integer형 일반변수 선언 */
    int *ptest;   /* integer형 포인터 선언 */

    numvar = 7;   /* numvar 변수에 7이라는 값을 대입 */

    ptest = &numvar;  
     /* ptest 포인터에 numvar 변수의 주소 대입 */

     *ptest += 3;     /* ptest 포인터에 대입된 주소의 값 더하기 3 */

     printf("%d\n", numvar);    /* numvar의 값 */
     printf("%d\n", *ptest);    /* ptest 포인터에 대입된 주소의 값 */
     printf("%d\n", ptest);    /* ptest 포인터에 대입된 주소 */
}     /* 값은 10, 10, numvar의 메모리 주소값이 나온다. */

구분
일반변수 a
포인터변수 *p
주소 참조
&a
p
값 참조
a
*p

배열과 포인터.

배열의 주소를 포인터에 대입하는 방법.

array[10]이라는 배열의 주소를 *pointer란 포인터에 넣을 경우.

1. pointer = &array[0];
2. pointer = array;

ex)
#include<stdio.h>

main(){

     int num[5] = {1, 2, 3, 4, 5}; /* integer형 배열 선언 */
     int *nump;                             /* integer형 포인터 선언 */

     nump = num; /* 배열의 첫번째 요소의 주소를 포인터에 대입 */

     for(int i=0; i < 5; i++){
          printf("%d ", *(nump + i));
       /* 포인터에 대입된 num배열의 값을 num[0]부터 차례로 표시. */
     }
     printf("\n");
} /* 값은 1 2 3 4 5 */

-2007.11.16
-2007.11.23 배열 파트 약간 수정.