#include <iostream> |
묵시적 형 변환 : 산술연산의 경우 int + float와 같이 두 피연산자의 자료형이 다를 때
시스템이 자동적으로 int형은 float형으로 변환시킨 다음, 덧셈 연산을 수행한다.
컴파일러가 자동으로 처리를 해준다.
(상향 캐스트, 하향 캐스트 둘다 가능)
2)명시적 형 변환 : 심블테이블 형성후 좌형 기준으로 우측 형이 다를 때 프로그래머가
강제적으로 형을 맞춰주는 변환이다.
하향캐스트 : 자료의 손실이 일어나므로 조심하여야한다.
3)시험
int A = 200;
int * B = &A;
char * C = (char *)&A; (주소 형 4byte)
char D = *C; (캐릭터 형 1byte)
|
0 |
메모리 구조 |
심블테이블 | |||||||
|
200 |
D(491) |
type |
이름 |
주소 | |||||
|
500 |
C(492) |
int |
A |
500 | |||||
|
500 |
B(496) |
int * |
B |
496 | |||||
|
200 |
A(500) |
char * |
C |
492 | |||||
|
ffffffff |
char |
D |
491 | ||||||
1) * iPoint = &iNum1; 일 때 좌, 우를 나누어서 생각한다.
iNum1의 주소를 iPoint에 저장되어 있는 주소에다가 넣는다.
(주소와 값은 형이 틀리지만 같은 정수형이라 컴파일 된다.)
2) iAge[0], *iAge, *(iAge+0)의 값들은 다 동일하다.
3) 배열의 강점은 for문을 사용 할 수 있다.
4) 처음 변수 밑으로 2칸에는 return address 가 있다
return address에는 다른 수를 넣게 되면 Linux 자체에서 꺼버린다
1)캐스팅연산 => 형을 동등하게 맞춰주는 연산.(기준은 항상 왼쪽이다.)
2)캐스팅 연산에서 char형이 int형으로 변환될 때.
1byte를 4byte에 넣는 것이 아니라 4byte로 늘인 후 확장한 뒤 나머지 3칸을
쓰지 않는 상태로 만들고 1byte를 대입시킨다.(모든 일은 cpu에서 일어난다.)
3)배열의 주소를 불러오면 배열 시작주소를 불러오고 이를 통해 배열의 이름은
상수이지만 배열 이름만의 주소는 없음을 알 수 있다.
4)포인터 변수는 먼저 값을 가지고 온 뒤 배열주소를 해석 한다
포인터는 배열을 나타내며 아래의 *iPoint 주소와 iPoint[0]의 주소는 동일하다.
(포인터는 변수로 포인터 변수의 주소는 존재한다.)
int Num = 3;
int * iPoint = &Num;
{ *iPoint = 9 } = { ipoint[0] = 9 }
1)const변수 = 상수를 나타낸다.
자료가 저장 혹은 변환되는 것을 막아주며 고정시켜 준다
int const Num = 3; <= 변하지 않는다.
2) 가.caAl[iCnt] = 'a' + iCnt
나.((배열)주소)[iCnt] = 'a' + iCnt
다.ucPoint[iCnt] = 'a' + iCnt
라.*(CaAl+iCnt) = 'a' + iCnt
마.*(ucPoint +iCnt) = 'a' + iCnt
(모두 같은 의미이다.)






Recent Comment