공부 기록/C

2024.04.01. C언어

bumm 2024. 4. 1. 13:40
#include <stdio.h>

int main(void)
{
    // 정수형 배열 ary를 선언합니다. 크기는 3으로 지정합니다.
    int ary[3];

    // 정수형 포인터 pa를 선언하고, 배열 ary를 가리키도록 초기화합니다.
    int *pa = ary;

    // 정수형 변수 i를 선언합니다.
    int i;

    // 배열의 첫 번째 요소에 10을 할당합니다.
    *pa = 10;

    // 배열의 두 번째 요소에 20을 할당합니다. 포인터 산술을 사용하여 두 번째 요소에 접근합니다.
    *(pa + 1) = 20;

    // 배열의 세 번째 요소에 첫 번째 요소와 두 번째 요소의 합을 할당합니다.
    pa[2] = pa[0] + pa[1];

    // 배열을 순회하면서 각 요소를 출력합니다.
    for (i = 0; i < 3; i++)
    {
        // printf 함수를 사용하여 배열의 각 요소를 출력합니다.
        // %5d 형식 지정자를 사용하여 출력 시 공백을 추가하여 오른쪽 정렬합니다.
        printf("%5d", pa[i]);
    }

    // 프로그램을 종료합니다.
    return 0;
}

 

결과 : 10 20 30

 

C언어.. 바이트? 뭐어쩌구하는거 왜 들어도들어도 가물가물한지 모르겠음

 

#include <stdio.h>

int main(void)
{
    // 크기가 3인 정수형 배열 ary를 선언합니다.
    int ary[3];
    int i;
    
    // 첫 번째 배열 요소에 10을 할당합니다.
    *(ary + 0) = 10;

    // 두 번째 배열 요소에 첫 번째 배열 요소의 값에 10을 더한 값을 할당합니다.
    *(ary + 1) = *(ary + 0) + 10;
    
    // 키보드로부터 입력을 받아 세 번째 배열 요소에 할당합니다.
    printf("세 번째 배열 요소에 키보드 입력 : ");
    scanf("%d", ary + 2);
    
    // 배열을 순회하며 각 요소를 출력합니다.
    for (i = 0; i < 3; i++)
    {
        // 포인터 산술을 사용하여 배열의 각 요소에 접근하고 값을 출력합니다.
        printf("%5d", *(ary + i));
    }
    
    return 0;
}

 

배열명과 포인터의 차이

포인터가 배열명처럼 쓰이긴 하지만 차이점이 많음.

1. sizeof 연산의 결과가 다름

#include <stdio.h>

int ary[3];
int *pa = ary;
pa[1]
(pa+1)
sizeof(ary)
sizeof(pa)

결과는 에러가 뜸

int 선언은 ary[3] 배열에 정수만 넣을 것이라는 선언.

int *pa = ary 는 포인터 변수로 ary의 주소를 pa로 할 것이라는 선언.

pa[1]과 (pa+1)의 차이

pa[1] : 101동 101호를 저장

(pa+1) : 101동까지 저장, 그리고 거기서 첫번째 호수라는 뜻 => 저장 용량이 적음

 

#include <stdio.h>

int main(void)
{
    // 크기가 3인 정수형 배열 ary를 선언하고 초기화합니다.
    int ary[3] = { 10, 20, 30 };

    // 정수형 포인터 pa를 선언하고, 배열 ary를 가리키도록 초기화합니다.
    int *pa = ary;
    
    int i;
    
    // 배열의 값을 출력합니다.
    printf("배열의 값 : ");
    for (i = 0; i < 3; i++)
    {
        // 포인터를 사용하여 배열의 각 요소에 접근하고 값을 출력합니다.
        printf("%d ", *pa);

        // 포인터를 다음 배열 요소로 이동합니다.
        pa++;
    }
    
    return 0;
}