국기3기 정규수업 13일차 메모

2015. 3. 22. 03:51창고

728x90
728x90

#include <stdio.h>

/*

///////////////////////

숙제

가위바위보 // 무한반복 한 번 더? yes, no

구조체성적표

//////////////////////


함수 호출 방식

call by name

함수식을 호출했을 때 함수식으로 치환되어 실행되는 형태.

#define은 조금 애매하다.

전처리에서 이미 식이 다 치환되기때문에 컴파일 시점에서 이것을 함수식이라고 볼 수 없다.

call by value

값으로 호출하는 형태. 


call by address 

실인수에 주소를 전달하는 형태.


call by reference

포인터 변수 

래퍼런스 변수 

typedef int MYINT;

단순하게 알리는 용도. 기존의 타입을 이것이라고 부른다. 재정의.

--------------------------------------------------


사용자 정의 타입.

structure enumeration union

태그라는게 존재.


struct _태그명

{

멤버변수

};

타입으로 인정 - 키워드 + 태그


배열 VS 구조체

동형 VS 한 개 이상의 동형 또는 이형(구조체는 빈 구조체를 만들 수 없다.)


----------------------------------------------------

struct A;

운영체제로부터 메모리공간 어딘가에 구조체  A의 멤버변수들의 크기만큼 메모리 공간을

연속적으로 할당받고 그 주소위에  A라는 문을 만들고 그 안에는 쓰레기 값들이 들어있다.


A.(안에있는) : 일반구조체변수

A->(A가 가리키는곳에) : 구조체 포인터


구조체를 전역에 선언하는 이유 - 다른 함수에서도 사용하기 위해서.

태그명을 쓰는 이유 - 변수로도 사용하겠다라는 의미. 


패딩 - 누빔. 바이트를 누벼 남는 비트들.

구조체 정렬.

왜? 컴퓨터가 최적화 옵션에서 빠르게 처리하기 위해서 바이트 단위를 맞추기 위해서.


----------------------------------------------------------

이미 리치킹............

union tag

{

1개 이상의 이형이나 동형

};


enum 태그명

{


};


열거자는 기본적으로 정수형을 사용한다.

변수 사용이 가능하다.




*/


union tagC

{

int a;

char b;

float c;

double d;

};


struct tagD

{

union

{

struct

{

int a;

int b;

int c;

};


int arr[3];

};

};


#pragma pack( push, 1 )


struct tagA

{

int a;

short b;

char c;

double d;

};


#pragma pack( pop )


struct tagB

{

int a;

double b;

char c;

short d;

};


void main()

{

union tagC test;


printf("%d\n",sizeof(test));

printf("%d\n",sizeof(struct tagB));


struct tagD test2;




}



728x90
반응형