★ 포인터와 캐스트
float *fp 선언후에
fp=3;
이라고 한 뒤 컴파일 하면 warning이 뜬다. (파일 실행에는 이상 없음.)
왼쪽은 자료형이 float* 형이고
오른쪽 '3' 은 자동적으로 int형이라 양쪽의 자료형이 일치하지 않는다.
포인터형에 값을 초기화해줄때는 자료형이 같지 않다면 컴파일시 warning이 뜸.
>> 파일 실행에는 이상이 없음.
warning을 없애고 싶다면 양쪽의 자료형을 통일시켜주면 된다.
fp = (float*)3;
이렇게 하면 3이 자동으적으로 float형 포인터로 형 변환이 일어나서 warning이 없어진다.
만약에
int x;
int *xp;
xp = &x;
라고 정의를 했을 때에는
warning이 뜨지 않는다.
왼쪽의 xp는 *int 형이고
오른쪽의 x는 int형인데, &이 *로 인식되기때문에 결국 *int 형으로 인식되고
왼쪽과 오른쪽의 형이 같기 때문에 warning 이 뜨지 않는다.
변수명 앞에 * 가 있으면
ex) *iNum;
>> 1. 해당 변수가 있는지 확인
>> 2. 해당 변수가 포인터형인지 확인
>> 3. 포인터형이 아니라면 곱셈으로 치부
>> 곱셈은 다항연산자라, 항이 2개 필요 / 현재 항은 iNum하나만...
>> 컴파일시 에러 발생
★ iNum이 포인터형이라면 컴파일시에러 없음
ex) int iNum*;
*iNum;
포인터형 앞에 * 을 붙이면 해당 주소가 된다.
'공부' 카테고리의 다른 글
getchar 와 putchar 에 대한 고찰 / 버퍼 / 스캔 코드 / printf , scanf 귀찮아~~ (0) | 2010.10.20 |
---|---|
메모리에 저장할 때 최적화. (0) | 2010.10.17 |
C언어 / 구구단 소스. (0) | 2010.10.17 |
논리 연산자 계산순서( || && ) / 증감 연산자 (0) | 2010.10.17 |
short 의 최대, 최소값 구하기 (0) | 2010.10.17 |