sizeof 연산자


sizeof A  : A 메모리의 크기를 

바이트 단위로 알려준다.


cpu 하는 연산이 아닌 

컴파일러가 하는 연산.


컴파일러가 기계어로 

번역하는 과정에서 발생하는 연산.


자료형의 크기를 컴파일러에게 물어보는 .


  

 

int Data = 10;

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

 

변수 Data의 자료형은 int이므로 

4를 출력

 


printf("%d\n"sizeof(char*));

 

32비트 어플리케이션 VS 사용하고 있다면 

char 대한 포인터이므로 

4 출력



char Name[16] = { "Start" };

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

 

배열의 이름인 

Name 자료형은 char이고

결국 char[16] 같으므로 

16 출력

 

 

char Name[16] = { "Start" };

printf("%d\n", sizeof(Name + 1));

 

"char[] == char*"

"[] = *" 로 변환 될 수 있다.


"char*" 본질은 주소이므로 

여기에 정수(int)'1'을 더하면 연산결과는 

다시 주소를 담을 있는 포인터가 된다.

따라서 4 출력


(포인터에 대해 아직 잘 몰라서 일단 들은대로 적음)

(나중에 제대로 이해하면 첫번째 문단의 이유를 다시 제대로 적겠습니다)


 

int Data = 10;

printf("%d\n", sizeof(++Data));

printf("%d\n", Data);

 

sizeof연산은 컴파일러가 하는 연산.

단항증감에 대한 연산을 수행하지 않고

자료형이 무엇인가를 알려주는 것.


따라서 Data변수의 자료형은 int이므로

4 출력하게 된다.


다음행에 변수 Data 정보를 출력해보면

원래 Data 값인 10 출력된다.






** 잘못알고 있는 것이 있으면 댓글로 알려주시면 감사하겠습니다! **

'프로그래밍 > C언어' 카테고리의 다른 글

쇼트서킷(Short-circuit)  (0) 2018.07.02
단항 증감 연산자  (0) 2018.06.28
단순 대입 연산자  (0) 2018.06.28
비트연산자  (0) 2018.06.28
자료형, 보수와 음수표현  (0) 2018.06.14

+ Recent posts