포인터도 당연히 형변환이 된다.
포인터의 형변환도 별거 아니다. 너무 어렵게 생각하지 말기 바란다.
하지만 포인터 형변환은 꽤 위험한데 그 이유를 알아보자.
(uint8_t*)® 요것의 의미 lsm6dox_reg.c
int32_t lsm6dsox_reset_set(lsm6dsox_ctx_t *ctx, uint8_t val) {
lsm6dsox_ctrl3_c_t reg;
int32_t ret;
ret = lsm6dsox_read_reg(ctx, LSM6DSOX_CTRL3_C, (uint8_t*)®, 1);
if (ret == 0) {
reg.sw_reset = val;
ret = lsm6dsox_write_reg(ctx, LSM6DSOX_CTRL3_C, (uint8_t*)®, 1);
}
보이드 포인터란? (What is void pointer?) 그리고 제너릭 포인터
포인터를 다른 타입으로 변환하면 원래 데이터의 크기와 정렬방식이 달라질수 있다.
int를 char로 변환시, 4바이트를 1바이트 단위로 접근하게 되어 이상한 값이 읽힐수 있다.
float을 int로 변환시, 부동소수점을 int로 읽어 희한한 값이 나올수 있다.