본문 바로가기
개발 공부/C언어

#16 C언어 *의 피연자는 포인터여야 하는데 Int 형식이 있음 오류

by 반달bear 2022. 8. 4.
반응형

 

*의 피연자는 포인터여야 하는데 Int 형식이 있음이라는 에러가 날 때는 

아마 포인터 배열을 사용한 경우일 것입니다.

 

 

void example(int * i){

int j = *i[1];

}

int main(void){

int arr[4] = {1,2,3,4};

example(arr); //arr의 시작주소 전달

}

 

라는 코드를 짜면 제목과 같은 에러가 뜹니다

 

하이라이트 친 부분을 자세히 보면 알 수 있습니다.

저는 main함수에 arr을 선언하고 arr의 시작주소를 example함수의 매개변수인 포인터 i로 전달하였습니다.

그렇다면 arr의 시작주소는 i의 시작주소가 되어 i를 arr배열 그 자체처럼 쓸 수 있게 됩니다.

*i[1]가 아니라 i[1]이 되는 것이 맞는 것이고 포인터를 포인터 자체로 보기보다 배열로 봐주면 한결 이해하기가 쉬워집니다.

 

반응형

댓글