programming/c

배열과 포인터

What is Array?



1. 오직 주소(address)만 받을 수 있ㄴㅇㅁ

ㅁㄴㅇㅁㄴㅇㅁㄴㅇㅁㄴㅇ


  • 장점(Advantages)

  • 선언(Declaration)

Datatype 배열의 이름[개수];



1. 오직 주소(address)만 받을 수 있ㄴㅇㅁ

ㅁㄴㅇㅁㄴㅇㅁㄴㅇㅁㄴㅇ


  • 배열명은 그 배열의 시작 주소를 의미한다!

1. 오직 주소(address)만 받을 수 있ㄴㅇㅁ

ㅁㄴㅇㅁㄴㅇㅁㄴㅇㅁㄴㅇ


  • 배열의 선언(Declaration for array)

→ Datatype 배열의 이름[개수];



1. 오직 주소(address)만 받을 수 있다.



Datatype 배열의 이름[개수];




Advantages of array



일괄처리를 할 수 있다!




★ 가리키는 Type *변수명;



★ 가리키는 Type *변수명;



1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
 
void main()
{
    int i;
    int arr[10= { };
 
    for (i = 0; i < 10; i++) {
        printf("arr[%d] = %d \n", i, arr[i]);
    }
}
cs


★ c 언어에서는 선언과 동시에 초기화할 때 값을 안넣으면 0이 들어간다!


arr[0] = 2

arr[1] = 0

arr[2] = 0

arr[3] = 0

arr[4] = 0

arr[5] = 0

arr[6] = 0

arr[7] = 0

arr[8] = 0

arr[9] = 0




포인터(day 08)

포인터는 주소를 알면서 기능이 생긴다


printf는? 값이 나오면 찍어라 *ptr++은 *ptr로 값을 인식했으니 더 쓸수없다


char *ptr; // 내가 가리킨 주소부터 1바이트만 읽는다


앞의 타입은 '이만큼 읽어라' 뜻을 가지고 있다.


----------------


2차원 포인터 역시 가리키는 배열의 크기를 알아야 한다

ex. char (*name)[10]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
void main(void)
{
    int *ptr;
    int n[] = { 51022343644 };
    ptr = n;
 
    printf("%d "*ptr++);        printf(" %d \n"*ptr);
    printf("%d "*ptr+1);        printf(" %d \n"*ptr);
    printf("%d "++*ptr);        printf(" %d \n"*ptr);
    printf("%d "*(ptr+1));     printf(" %d \n"*ptr);
    printf("%d "*ptr+=1);     printf(" %d \n"*ptr);
    printf("%d "*++ptr);        printf(" %d \n"*ptr);
    printf("%d ", (*ptr)++);     printf(" %d \n"*ptr);
}
cs

포인터를 잘 이해했는지?