프로그래밍[Univ]/데이터구조

[데이터구조]c언어 복습

Cloud Travel 2009. 3. 10. 12:01

1. Align > 메모리가  cpu의 bit수에 맞춰서 사용되는 것
   ex) char + int > 5byte가 아니라 8byte가 된다.(32bit cpu기준)
 Memory(□ : 미사용 , ■ : 사용 )
  ■□□□  > char 1byte를 사용하고 Align에 의해 3byte가 더 소비된다.
  ■■■■  > int 4byte를 사용한다
  □□□□  ┐
  □□□□  ┘> 미사용 메모리...

2. 파라매터 이름( 용어 중요 )
 ┌actual : Main
 └formal : function

3. 포인터
 ⓐ 선언 : int *p;
  > p의 타입이 인트가 아니라 p가 가르키는 것이 int이다.
 ⓑ p = (int *)malloc(sizeof(int));
  > 메모리 할당
 ⓒ free(p);
  > free를 통해서 메모리의 효율을 올릴 수 있다.
 ⓓ p = NULL
  >오류를 막기 위해 NULL을 지정해 준다.

  1) Generic Pointer
   ⓐ 선언 : void *ptr
    >원하는 타입으로 동적할당
   ※ 주의점
     > *p.Year = *(p.Year) > Error
     > (*p).Year = p -> next >course
      ====>우선 순위를 반드시 생각해야한다.

4. Recoursion
 > "base case"해결 책을 생각
 ex) 분활 정복 기법
  > 탐색 범위를 반씩 누눠가며 함수 실행
   1000 > 500 > 250 > ...... > 2 > ①->베이스 케이스
                                                  >해결책 모색 후 위로 돌아간다.
    >>최대 10번 탐색으로 해결 가능...

5. Memory


메모리의 효율을 위해
끝과 끝에서 heap과 stack이 시작되어
메모리가 배정된다.









> 스텍이 힙으로 진출하는 것을 
   방치하는 공간(stack overflow)

 return address > main에 돌아갈 줄 수 ( 주소 )


 return value > 리턴 값



>> int *s를 선언했을때 메인의 local variables와 heap에
     동시에 선언 되는 것에 주의한다