C

배열, 포인터, scanf

김꼬알 2023. 3. 28. 18:50

배열이란?

같은 자료형의 변수를 연속적으로 묶어 놓은 저장공간

 

 

배열의 선언

int a [5];

※ a[6] 은 없기 때문에 오류가 난다.

 

 

이차원 배열

같은 자료형의 변수를 행과 열의 연속적인 공간으로 묶어 놓은 것

 

void main(){
    char msg[50] = "Hello World! God Luck!";
    int i = 2, number = 0;
    while(msg[i] != '!'){    // !와 같은 값이 나올때까지 반복
    	if(msg[i] == e'a' || msg[i] == 'e' || msg[i] == 'i' || msg[i] == 'o' || msg[i] == 'u')
        	number++;    // if문이 참일때 수행함
        i++;    // if문이 거짓일때 수행함
    }
    printf("%d", number);
    return 0;
}

 

void main(){
    int i;
    char ch;
    char str[7] = "nation";
    for(i = 0; i < 4; i++){    // i < 4 가 참이면 아래 문장을 수행함
    	ch = str[5-i];    // i, ch 값을 확인한 후 str 배열에 들어있는 문자를 넣어줌
        str[5-i]; = str[i];
        str[i] = ch;    // ch를 이용하여 str 배열 알파벳의 자리를 교체함
    }
    printf("%s\n", str);
    return 0;
}

 

 

포인터란?

메모리의 위치를 표현한 기호

 

 

포인터 변수 선언

int *a;    // 포인터 변수 a를 int로 선언함

*a = 10;    // 포인터a의 값에 10을 대입

printf("%d", a);    // a 값은 102가 출력됨

printf("%d", *a);    // 포인터 a가 가리키는 값 10이 출력됨

 

 

변수의 주소 찾기

int b = 10;    // b 에 10이 들어가 있음

int *a;    // a는 포인터 변수임을 선언함

a = &b;    // a는 b의 주소값을 가짐

printf("%d\n", *a);    // a가 가리키고 있는 값이므로 10

printf("%d\n", b);    // b의 값은 10

 

#include <stdio.h>
void main(){
    int A = 10, B;
    int *C = &B;    // 포인터 C는 B의 주소값
    
    B = A--;    // B에 10을 대입한 후 -1을 해줌
    B += 20;    // B = 10 + 20
    printf("%d", *C);    // C의 값을 출력하므로 30
}

 

 

scanf

사용자의 키보드로 입력받을 때 사용하는 함수

scanf("%d", 변수의주소);

 

 

scanf 사용법

int a;

scanf("%d", &a);    // a의 주소값에 입력받음

printf("%d", a);

 

// 아래의 scanf() 함수의 입력으로 90을 타이핑했다고 가정

int main(){
    int i = 10;
    int j = 20;
    int *k = &i;    // 포인터 k는 i의 주소값을 입력받음
    
    scanf("%d", k);    // 90을 입력받았으므로 k가 가리키는 값 i에 90이 입력됨
    printf("%d, %d, %d\n", i, j, *k);
    return 0;
}