http://gall.dcinside.com/programming/796901
이게 제가 질문드린 원 글이구
답변은 90프로정도 이해했어용ㅎㅎ..
더 궁금한건
배열의 포인터를 int(*) a[]라고 표현하셨는데
저건 포인터의 배열을 뜻하는거고
배열의 포인터는 int[n] * a가 되는게 아닌가요
개념은 이해되지만 저 한 부분만 헷갈리네용
혹시 잘못적으신건지 아니면 제가 잘못알고있는건가싶어요
이게 제가 질문드린 원 글이구
답변은 90프로정도 이해했어용ㅎㅎ..
더 궁금한건
배열의 포인터를 int(*) a[]라고 표현하셨는데
저건 포인터의 배열을 뜻하는거고
배열의 포인터는 int[n] * a가 되는게 아닌가요
개념은 이해되지만 저 한 부분만 헷갈리네용
혹시 잘못적으신건지 아니면 제가 잘못알고있는건가싶어요
- dc official App
원래 C 변수 타입 모양이 좀 그래요 ㅇㅅㅇ.. 영산자 우선순위 문제도 있고 해서
넹? - dc App
int(*) a [] 자체가 맞는건가용? 괄호붙인게? - dc App
int (*)[n]이 되는 이유요 ㅇㅅㅇ 실제로 int (*a_ptr)[5]=a; 같은 시도를 해 보시면 ㅇㅅㅇ
이걸 님이 글에 쓰신 대로 하려면 typedef를 쓰면 되긴 해요
typedef int Array5[5]; Array5 *ptr; 같은 식으로 ㅇㅅㅇ
이해가 안대네여 ㅠㅠtypedef를 쳐보니까 구조체만들때 쓰는 예약어같은데 5열짜리 배열을 위한 타입을 하나 만들고 포인터를 쓰는것같은듸ㅣ.. 이게 맞다면 그 댓글은 이해했어요. 첫댓은 이해를못하겠어요 - dc App
첫댓은 안중요해요 ㅇㅅㅇ 그냥 int (*)[5]같은게 맞단 소리였으니까.. 그리고 이해하신 내용이 맞습니다
정수타입 옆에 붙은 괄호는 무엇이며 a_ptr은 뭔가용.. - dc App
보통 포인터 선언할때는 옆에 괄호가 안붙잖아용 옆에 괄호는 왜붙여준거에요? - dc App
아직 씨린이구 포인터들어간지 얼마안되서 이해못하는부분이 많네요 ㅠㅠ - dc App
a_ptr은 이름이고 괄호는 연산자 우선순위 때문이에요 ㅇㅅㅇ []연산자의 해석이 *보다 빨리 일어나는게 문제라
괄호 없이 달면 포인터 배열이 될겁니다 ㅇㅅㅇ
아.. int* [] --------int(*)[]는 연산자우선순위때문에 다른거였군요 이해했습니다. - dc App
감사합니다!! - dc App
아 근데 배열의 포인터를 만들땐 []이*보다 우선시되는게 맞지않나요? int형 배열의 포인터니까 배열의 우선순위가 우선시되어야할것같은데 - dc App
포인터의 배열을 만들땐 *연산자가 우선시되어야하는것같구요.. - dc App
지금 다시 생각해보니 int *array[5]가 안되는 이유는 해석 순서가 (((int *)array)[5])가 되기 때문인것 같네요 ㅇㅅㅇ
이걸 좀 더 이해하려면 함수의 포인터를 한번 써보면 좋을 것 같군요 ㅇㅅㅇ