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 |