본문 바로가기
c/학교,기관

1학기 c언어 정리(SW융합코딩1)

by 지트리아 2022. 8. 23.

자료형

문자형 : char(1byte)

정수형 : short(2byte), int(4byte), long(4byte)

부동소수점형 : float(4byte), double(8byte)


printf

%d 10진 정수 %ld long
%f 실수 %u unsigned int
%c 문자 %o unsigned
8진수
%s 문자열 %x unsigned
16진수
%e 부동소수점 실수    

 

scanf

%d 10진 정수 %e float
%f float %ld long
%lf double %u unsigned int
%c 문자 %o unsigned
8진수
%s 문자열 %x unsigned
16진수

 

이스케이프 시퀀스

\a : 경고(삐소리)  \b : 백스페이스  \n : 줄바꿈  \t : 수평탭


기호 상수

#define Change_rate 100  #기호 상수의 경우 첫 글자는 대문자로 할 것

 

;

cpu가 동작해야하는 명령어 끝

#은 cpu, 컴파일러가 안하고 전처리가 처리

함수는 {}로 정의함으로 끝을 따로 표시할 필요 x

 

센티널

입력되는 데이터의 끝을 알리는 특수한 값


조건문

if(조건식)
{
 }
else if(조건식)
{
 }
else
{
 }
switch(변수)
{
    case 정수 : #'+', 실수 , 문자가능, 변수불가 
             문장;  
             break;
    default:
             문장;
             break;
}
label :


goto label;

#가운데에 {}안써도 됨

 

반복문

초기식
while(조건식)
{
증감식
}
do
{
}while(조건식);
for(초기식;조건식;증감식)
{
}

 

break : 반복문 끝냄

continue : 코드 실행 건너뛰기


메모리

cs code segment
ds data segment
heap  
stack main이 저장됨

함수

int/void print_star(int x, int y)

{   #반환이 int라면 return이 들어가야 함(반환값은 하나만 가능)

}

int main(void)

{ int x = 0 , y = 0 ;

print_star(x,y);

return 0;

}

 

 

함수원형

함수원형은 main 함수 위에 적고 함수 정의는 main 밑에 정의


변수

전역변수 : 함수 외부에서 정의됨, 모든 곳에서 사용가능, ds(data segment)저장

지역변수 : 함수 내부에서 정의됨, 선언된 블록에서만 사용가능, stack저장

 

auto : 안쓰면 보통 auto로 인식, 블록을 벗어나게 되면 자동적으로 소멸

register : 빠르게 계산할 때 필요, 레지스터는 유한개이므로 선언시 일부반 적용될 수도

static : 선언시 ds에 저장됨(한번 생성되면 안사라짐), 다른 함수는 사용이 불가능(information hiding, 캡슐화된 코드를 제공 할 때 함부로 건드려서는 안되는 코드들을 보호하기 위해, 프로그램의 안정적 구현을 위해) 


배열

int scores[10];

배열의 이름은 포인터와 같음(일차원 배열만 포인터 대신 가능)

물론 2차원도 사용 가능

개수 = sizeof(scores) / sizeof(scores[0])

형식이 동일한 걸 연달아 저장할 때 이용(형식이 다르면 구조체)

함수 이용시 사본이 아닌 원본에 전달(용량이 너무 커짐)

함수 이용시 사본이 아닌 원본에 전달

int 함수명(int scores[]) # [ ]안에 개수 적을 필요x

이차원배열 → 메모리가 1차원이기 때문에 가로로 생각, 박스가 나열됨

 


포인터

사용을 하는 이유 : 이름으로 접근하지 못하는걸 이용하기 위해

초기화시 NULL 이용 (접근하면 절대 안되기 때문에 컴파일러에서 오류로 인식하기 때문)

scanf에서 &를 입력하는 이유는 '포인터를 사용하는 이유'와 같음

int * → 4, char * → 1, double * →  8  # 시작하는 주소는 같더라도 읽는 길이가 다름

포인터의 크기는 4 Byte(주소가 4 Byte로 표시되기 때문)

포인터 타입에 따라 ++연산 증가의 값이 달라짐 → 배열과 연관

char *pc = 100;         ++pc => 101

int *pi = 100;         ++pi => 104         pi + 2 => 108 

double *pd = 100;         ++pd => 108          pi + 2 => 116

포인터와 배열의 관계

int function( int a, int *pi) #함수의 원형은 하나의 값만 반환(return), *pi의 경우 in/out 둘다 가능)

dangling reference : 허상참조, 컴퓨터 프로그래밍에서 유효한 객체를 가리키고 있지 않은 포인터

댓글