int a[5];
int *b = a;
이러한 변수 사용할 때 여기서 a[2]를 참조하고 싶으면
b+2 잖아여
그럼 int a[5][5];
int **b = a
일때 a[1][3] 이거 참조하려면
*b[n] + m
n이랑 m값좀 제가 c 보고 군대갔다가 전역하고 대학 포기 후 공장다닌지 1년되어서 다시 파니깐
c문법을 좀 까먹까먹함 ㅜㅜ
int *b = a;
이러한 변수 사용할 때 여기서 a[2]를 참조하고 싶으면
b+2 잖아여
그럼 int a[5][5];
int **b = a
일때 a[1][3] 이거 참조하려면
*b[n] + m
n이랑 m값좀 제가 c 보고 군대갔다가 전역하고 대학 포기 후 공장다닌지 1년되어서 다시 파니깐
c문법을 좀 까먹까먹함 ㅜㅜ
제목을 잘못썼네.. 이차원배열 이중포인터로 사용할 때 임;
b*n+m 아니여?
저렇게는 안된다.
1,3 아닌가요?? 나도 다 까먹어서.. *b[n] 이 n 번째 배열 주소고.. 그 주소에 + M 이니까..
아하.. 그런가여? 배열 a[2]가 a[0]의 주소값에서 순차적으로 된다고 배워서 *a+2 라고 배웠떤 듯 한뎅;
악 헷갈린다.. 함 해봐야지 ㅠㅠ
a[2] 는 *(a + 2) 이긴 한데. 저건 a가 int * 인걸 아니까 사이즈 계산이 되는거고.
포인터 없는 언어쓴다고 다 까먹은듯.. ㅋㅋ
프수님 말씀은 이해해씀당ㅋㅋ 2차원 배열 이상에선 a[i][j]에서 j가 최소단위이고 그 다음마다 i의 주소값이 갱신되기때문인거죠? 한마디로 분과 초라고 생각하면 되는건가여??
a[3][60]에서 [3]요부분을 분으로 생각하면 그 뒤에 초단위인 60개의 배열이 있기 때문인데 주소값은 초단위로 순차적으로 나열되어있기에 a[0][0]에서 a[1][0]으로 해줄라면 *a + 60 이런식으로 필요하다는말씀?
난 gg 쳐야지.. 기억도 안나넹 ㅠㅠㅠ 근데.. int **b = a; 이거 안되네요... int (*b)[5] = a; 책 찾아보니.. 다차원 배열을 가리키느 배열포인터는 배열요소형을 가리키는 포인터야한다... 아흑..
*(a+60)
꼬마야//네 생각해보니 이중포인터가 가리키는건 포인터의 주소값이여야했음..제가깜빡함ㅋㅋ
int a[][]; int *b = a; int **c=b; 이런식으로..
저는 다 까먹음.. 허허.. 기억나는거는... b[0] == 0[b] 와 같다
아 자꾸 닉네임 야간포인터로 쓰다가 지우네;; **c = *a 이렇게 해도 될듯하미; 아닌가
이중포인터도 어차피 포인터
아맞당; 문법을 다 까묵쳐묵했나봐여 int *b = &a[0][0] 이것도 맞는소린가여
야간포인터.. ㅋㅋㅋㅋ lvalue에 * 붙으면 값 아닌가요?
[0]b겠지
맞아요.. 값의 주소니까..
메모리 맵을 그리는게 제일 좋은듯
ㄴㄴㄴ 예전 코드에 보니까... x[0] = 10; ++0[x]; 이런 코드가 있네요.. 언제적 짯는지도 몰것네요..
0[b] 되던데요... 음.. 예전 컴파일러에서는 안되나요??
그니깐 생각해보니 포인터형 변수는 어떤 변수의 주소값을 가리켜야하니깐 배열이 아닌 변수의 주소값을 가져야하므로 &a[0][0] 요게 맞는소리같긴한데 그럼 a[3][60]일 때, *(b + 61) = a[1][1]인가;
그럼 이중포인터는 포인터형 변수의 주소값을 가리켜야해서 **c = &b형태로 지정해주어야하는가
b[0] = *(b+0) = *(0+b) =0[b] 원래 이런거잖아요
여튼.. 저는 다 까먹음.. 아마 예전에는 .. 이해하고 쓴게 아니라 외워서 썼던듯.. 그니까.. 다 까먹지.. ㅋㅋ
포인터 ㅅㅂ