int arr[5]; 라는 문장을 매개변수로 사용하려면
int*arr 이런식으로 쓰는데요 이것이 arr의 타입형이 int*라서 이렇게 쓰는건가요?
그럼 int*arr[5] 를 매개변수로 사용하려면
int**arr 이렇게 표현하여야 하는것이 맞나요?
그런데 char*str 이라는 문장을 매개변수로 사용할때는 char*str 입니까?
문자열이라서 방식이 다른겁니까?
답변 부탁드립니다
int*arr 이런식으로 쓰는데요 이것이 arr의 타입형이 int*라서 이렇게 쓰는건가요?
그럼 int*arr[5] 를 매개변수로 사용하려면
int**arr 이렇게 표현하여야 하는것이 맞나요?
그런데 char*str 이라는 문장을 매개변수로 사용할때는 char*str 입니까?
문자열이라서 방식이 다른겁니까?
답변 부탁드립니다
이게 바로 포인터 == 배열 이라는 인식의 폐해
int arr[5]; 에서 arr의 타입은 int[5] 야
arr 이라는 이름은 정수형태를 가르치고 있으니깐 arr의 타입형은 int* 아닌가요??
음 매개변수 말하는게 함수에서 콜 바이 포인터로 쓸때 말하는건가? 그러면 arr[5] 배열자체가 주소를 말하는거니까 int * arr 로 받고서 배열처럼 arr[0]~arr[4] 쓰면되
arr을 int * 처럼 쓸수 있는데 타입이 int * 이라고하는건 정확하진 않은거 같아
흠 그렇군요 감사합니다~
int *arr[5] 면 int 형 포인터 5개짜리 배열 (포인터 배열이 되니까) int **arr 쓰면될테고 만약 int arr[n][5] 라던가 int (*arr)[5] 면 얘기가 달라져
그렇군요 ㅎㅎ 근데 매개변수에서 (int*param) 이렇게 되어있으면 무조건 배열을 불러오는건가요? 다른 뜻을 가질수는 없나요? 예를 들어서 배열이 아니라 단순히 int형 포인터를 불러온다던지..
포인터가 배열을 부르려고 만든 껍데기라고 생각하지를 말아봐 일단 지금 젤 큰 문제가 저렇게 이해하고 있다는거 같다
음 int *param 이면 배열을 떠올릴 필요는 없을듯 저건 그냥 int형 포인터 니까 배열을 보내면 배열이 연속적으로 저장되있다는 특성상 배열처럼 쓸수 있는거지 kukyakya형 말대로 포인터랑 배열을 따로 놓고 봐야될듯 비슷하긴한데 목적은 다르니까
아 그렇군요!! 감사합니다