int i = 100 ;
int* pInt = &i;
//주소로 접근
(*pInt) =100;
//주소의단위
100;
//자료형 +* 변수명
//해당포인터에게 전달된 주소를 해석하는 단위
float f =3.f;
int * pInt=(int*)&f;
i= *pInt;
float 형 부동소수점 3으로 표현한 비트를 int 포인터의 대입시키면 큰숫자가 나온다 .
그것은 float형 포인터인데 부동소수점을 포함한 비트가 1111.11120 요딴식으로 나오니 그걸 int 형으로 보겠다 . 111111120 의 의미이다.
02.포인터배열
32비트, 64비트 에 따라 포인터주소는 용량이 달라짐
32비트 4바이트 , 64비트 8바이트 .
pInt = int*변수 이기때문에 가르키는곳은 int로 해석한다 따라서 주소값을 1증가하는 의미는 다음 int 위치로 접근하기 위해서 sizeof(int) 단위로 증가하게 된다 .
포인터와 배열
배열의 특징
1.메모리가 연속적인 구조이다
2. 배열의 이름은 배열의 시작주소이다.
int iArr[10]={};
*(iArr +1)=10; //2번째칸에 10을 넣겠다 .
short sArr[10] ={1,2,3,4,5,6,7,8,9,10};
int* pI = (int*)sArr;
int iData = *((short*)(pI+2);
printf("1번문제 정답 %d ,iData);
답은 5 ,
char cArr[2] = {1,1};
short * pS=(short*)cArr;
iData =*pS;
printf ( " 2번문제 정답 %d , iData);
답 257
출처 -https://www.youtube.com/watch?v=dnU6Rqj8DFU&list=PL4SIC1d_ab-aOxWPucn31NHkQvNPHK1D1&index=28