"C언어 포인터와 배열"의 두 판 사이의 차이

잔글 (봇: 자동으로 텍스트 교체 (-source +syntaxhighlight))
 
(사용자 3명의 중간 판 19개는 보이지 않습니다)
10번째 줄: 10번째 줄:
:→ 정수형 변수 a가 n개  
:→ 정수형 변수 a가 n개  


{| class='wikitable'
:{| class='wikitable'
| a[0] || a[1] || ||  ||  ||  ||  ||  || .........|| a[n-1]  
| a[0] || a[1] || a[2] || .........|| a[n-1]  
|}
|}


* int *pa
* int *pa
:→ pa 주소방 1개
:→ pa 주소방 1개
{| class='wikitable'
:{| class='wikitable'
| pa ||
| pa
|}
|}


==포인터와 배열의 크기==
==포인터와 배열의 크기==
<source lang='C'>
<syntaxhighlight lang='C'>
#include <stdio.h>
#include <stdio.h>


35번째 줄: 35번째 줄:
     return 0;
     return 0;
}
}
</source>
</syntaxhighlight>
:→sizeof(a[0])는 int 배열 하나의 크기를 의미 하므로 4바이트임
:→sizeof(a[0])는 int 배열 하나의 크기를 의미 하므로 4바이트임
:→sizeof(a)는 int a[10] 배열 전체 크기를 의미 하므로 40바이트임
:→sizeof(a)는 int a[10] 배열 전체 크기를 의미 하므로 40바이트임
:→sizeof(pa)는 포인터 (주소방) 기본 크기를 의미 하므로 8바이트임 (주소방 크기는 본인의 시스템에 따라 4바이트 혹은 8바이트로 다를 수 있음)
:→sizeof(pa)는 포인터 (주소방) 기본 크기를 의미 하므로 8바이트임 (주소방 크기는 본인의 시스템에 따라 4바이트 혹은 8바이트로 다를 수 있음)


[[분류:C]]
==값 할당 및 출력==
[[분류:배열]]
배열은 선언 시 공간이 이미 할당되나 포인터는 단지 포인터 주소방만 생성됨. 따라서 malloc()으로 메모리 공간을 따로 만들어 주어야함.
[[분류:포인터]]
 
* 배열
<syntaxhighlight lang='C'>
#include <stdio.h>
 
int main()
{
    int a[10];
    int i;
 
    for (i = 0; i < 10; i++) {
        a[i] = i;
    }
 
    for (i = 0; i < 10; i++) {
        printf("%d\n", a[i]);
    }
 
    return 0;
}
</syntaxhighlight>
 
:{| class='wikitable'
| 0 || 1 || 2 ||.........|| 9
|}
 
* 포인터
<syntaxhighlight lang='C>
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int *pa;
    int i;
 
    pa = (int *)malloc(sizeof(int)*10);
 
    for (i = 0; i < 10; i++) {
        *(pa + i) = i;
    }
 
    for (i = 0; i < 10; i++) {
        printf("%d\n", *(pa + i));
    }
 
    return 0;
}
</syntaxhighlight>
 
:{| class='wikitable'
| pa
|}
:↓
:{| class='wikitable'
| 0 || 1 || 2 ||...||9
|}
 
==같이 보기==
* [[C언어 기초]]
* [[C언어 배열]]
* [[C언어 포인터]]
* [[C언어 포인터의 크기]]
 
[[분류:C 포인터]]
[[분류:C 배열]]

2020년 11월 2일 (월) 02:41 기준 최신판

1 개념[ | ]

포인터와 배열의 차이

2 형태[ | ]

  • int a[n]
  • int *pa

3 포인터와 배열의 의미[ | ]

  • int a[n]
→ 정수형 변수 a가 n개
a[0] a[1] a[2] ......... a[n-1]
  • int *pa
→ pa 주소방 1개
pa

4 포인터와 배열의 크기[ | ]

#include <stdio.h>

int main()
{
    int a[10];
    int *pa;

    printf("%lu\n", sizeof(a[0])); // 4
    printf("%lu\n", sizeof(a)); // 40
    printf("%lu\n", sizeof(pa)); // 8

    return 0;
}
→sizeof(a[0])는 int 배열 하나의 크기를 의미 하므로 4바이트임
→sizeof(a)는 int a[10] 배열 전체 크기를 의미 하므로 40바이트임
→sizeof(pa)는 포인터 (주소방) 기본 크기를 의미 하므로 8바이트임 (주소방 크기는 본인의 시스템에 따라 4바이트 혹은 8바이트로 다를 수 있음)

5 값 할당 및 출력[ | ]

배열은 선언 시 공간이 이미 할당되나 포인터는 단지 포인터 주소방만 생성됨. 따라서 malloc()으로 메모리 공간을 따로 만들어 주어야함.

  • 배열
#include <stdio.h>

int main()
{
    int a[10];
    int i;

    for (i = 0; i < 10; i++) {
        a[i] = i;
    }

    for (i = 0; i < 10; i++) {
        printf("%d\n", a[i]);
    }

    return 0;
}
0 1 2 ......... 9
  • 포인터
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int *pa;
    int i;

    pa = (int *)malloc(sizeof(int)*10);

    for (i = 0; i < 10; i++) {
        *(pa + i) = i;
    }

    for (i = 0; i < 10; i++) {
        printf("%d\n", *(pa + i));
    }

    return 0;
}
pa
0 1 2 ... 9

6 같이 보기[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}