22.03.05 회고

김영태·2022년 3월 5일
0
char sentence_4[4] = {"Psi"};

psi글자는 3글자인데 배열의 크기는 4로 해두었음.
null(끝나는 부분을 지정) 자리가 비어있어야하기 때문에 항상 글자수 +1을 배열 크기로 해두어야함. => null은 자동으로 추가되므로 굳이 명시할 필요는 없음
null 종류 : '\0', 0, (char) NULL
null 이 아닌 것 '0'

%c는 문자 하나만을 출력하는 것과 달리 %s는 null문자가 나올때까지 계속 추가함
큰따옴표 "" : 문자열(한 개 이상의 문자)을 지정할 때 사용
작은따옴표'' : 한 개의 문자를 지정할 때 사용

int num;
char c;
scanf("%d", &num);
scanf("%c", &c); // %c를 이용하여 문자를 가져올 떄 주의점
				 // %c는 단 하나의 문자만 가져오게됨.
				 // &num의 값을 입력받았을때 stdin에는 \n이 남아있게됨
                 // 따라서 %c를 통해 stdin에서 가져오려고 할 때 \n의 값을 가져오므로
                 //아무것도 출력이 되지 않을 수가 있음>>> %s가 해결책이나 완벽한 것은 아님
getchar(); // 을 이용해서 위와같이 \n(=NULL)이 남아있는 것을 방지해줌
		   // stdin에서 마지막에 남아있던 \n을 읽어와서(마지막에 남은 값이 다른 값이면 해당 값을 가져올 것)
           //결과적으로 stdin에 아무것도 남지 않음
           //%c는 되도록 사용하지 않는 것이 최선

문자열은 literal. printf를 통해 읽기는 가능하지만

char \*cc ="good" // 에서 cc[1] ='a'와 같이 문자를 고쳐쓰는 것은 허용되지 않음

char str[] = "hello"; 문장이 있을때 str[1] = 'h' 를 해도 문제되지 않음.
=> char str[] = {'h', 'e', 'l', 'l', 'o', '\0'}; 과 같은 표현이라서.

구조체 = 각 원소의 타입이 제각각인 배열

#include <stdio.h>
struct test {
    int a, b;
};
int main() {
    struct test st;
    struct test *ptr; // 포인터일 뿐 구조체가 아님
    
    ptr = &st;
    
    (*ptr).a = 1; //st.a와 동일
    (*ptr).b = 2; // ptr->b = 2; 와 같은 방식으로도 사용가능
    
  printf("st 의 a 멤버 : %d \n", st.a);
  printf("st 의 b 멤버 : %d \n", st.b);

  return 0;
}
#include <stdio.h>
struct TEST {
    int c;
    int *pointer;
    
};
int main() {
    struct TEST t;
    struct TEST *pt = &t;
    int i = 0;
    
    t.pointer = &i;
    
    *t.pointer = 3; // . 이 * 보다 우선순위가 높으므로 t.pointer가 먼저 해석되고 
    				//그 다음 *(t.pointer) 형태로 해석됨 
    
    printf("%d \n", i);
    
    *pt->pointer = 4; // -> 가 *보다 우선순위가 높음
    printf("%d \n", i);
    return 0;
}

열거형을 나타내기 위해서는
#include <stdio.h> 아래에
enum {a값, b값, c값....}; 을 사용

전역변수(지역변수와 달리 함수 바깥에서 정의된 변수)는 설정하지 않아도 디폴트 값이 0으로 설정됨. 반면 지역변수는 초기값을 설정하지 않으면 컴파일 오류 발생

정적변수를 사용할 떄는 static을 사용(보통 지역변수가 함수 외부로 빠져나오면 파괴되지만 자료형 앞에 static을 붙여 정적변수로 만들면 지역에서 빠져나와도 파괴되지 않음 - 단 프로그램이 종료될 때 파괴됨)

0개의 댓글

관련 채용 정보