반응형
*의 피연자는 포인터여야 하는데 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]이 되는 것이 맞는 것이고 포인터를 포인터 자체로 보기보다 배열로 봐주면 한결 이해하기가 쉬워집니다.
반응형
'개발 공부 > C언어' 카테고리의 다른 글
#18 [열혈 C 프로그래밍] 도전! 프로그래밍3 - 1번, 2번, 3번, 4번, 5번, 6번 코드와 해설 (0) | 2022.08.04 |
---|---|
#17 [열혈 C 프로그래밍] 도전! 프로그래밍2 - 1번, 2번, 3번, 4번 (0) | 2022.08.04 |
#15 C언어 [도전! 프로그래밍3/4번] srand 여러번 쓰면 안되는 이유 (0) | 2022.08.02 |
#14 C언어 반복문과 조건문에서의 break; continue; return;의 차이점 (0) | 2022.08.02 |
#13 C언어 변수형태/상수형태 배열과 포인터의 차이점과 공통점 (0) | 2022.08.02 |
댓글