이걸 까먹음
예전에 printf로 비교해본적이 있었는데
지금와선 하나도 기억 안나네;
int a[5][5];
int *b = &a[0][0];
int **c = &b;
이거 **c부분에 이렇게 선언하는게 맞는진 모르겠는데 일단 **c가 *b의 주소값을 가리킨다고 생각했을때
일단 printf("%d",a[0][0])이게 a[0][0]안에 들어있는 변수를 출력한다는건 기초적으로 알고있음
그리고 &*a[0][0] == a[0][0] 이런식으로 배웠던 기억이 살짝 나는데
그럼 까먹은부분은
변수의 내용 <- 변수의 주소 <- 포인터 <- 포인터의 주소
라고 봤을 때
*하면 오른쪽으로 한 칸 이고 &이면 왼쪽으로 한 칸 인가
1.
printf("%d",*a[0][0])
이렇게 하면 a배열 시작 주소값이 출력되는가
printf("%d",b)
이것도 위와 같은 값을 출력함?
printf("%d,&&b)
이건 a[0][0]의 변수 출력?( &b == a[0] ?)
printf("%d",c)
이건 b의 주소값이 출력되겠고
위 내용이 참이라면
2.
printf("%d",&c)
이건 b의 주소값이 나오나여
1이랑 2에서 틀린것좀 집어주세요 개념정리해야함 제가 무개념이라
예전에 printf로 비교해본적이 있었는데
지금와선 하나도 기억 안나네;
int a[5][5];
int *b = &a[0][0];
int **c = &b;
이거 **c부분에 이렇게 선언하는게 맞는진 모르겠는데 일단 **c가 *b의 주소값을 가리킨다고 생각했을때
일단 printf("%d",a[0][0])이게 a[0][0]안에 들어있는 변수를 출력한다는건 기초적으로 알고있음
그리고 &*a[0][0] == a[0][0] 이런식으로 배웠던 기억이 살짝 나는데
그럼 까먹은부분은
변수의 내용 <- 변수의 주소 <- 포인터 <- 포인터의 주소
라고 봤을 때
*하면 오른쪽으로 한 칸 이고 &이면 왼쪽으로 한 칸 인가
1.
printf("%d",*a[0][0])
이렇게 하면 a배열 시작 주소값이 출력되는가
printf("%d",b)
이것도 위와 같은 값을 출력함?
printf("%d,&&b)
이건 a[0][0]의 변수 출력?( &b == a[0] ?)
printf("%d",c)
이건 b의 주소값이 출력되겠고
위 내용이 참이라면
2.
printf("%d",&c)
이건 b의 주소값이 나오나여
1이랑 2에서 틀린것좀 집어주세요 개념정리해야함 제가 무개념이라
c책을 하나 사야겠네;
아하 그러네여 보니깐 *&a[0][0]이거 마즈셈; == a[0][0]
이렇게 하면 오른쪽으로 갔다가 왼쪽으로 와서 다시 a[0][0]의 내용을 말하게되는건가여
아하 간단한 영어라서 이해가 잘가네여..
&는 걍 주소
저 그럼 &&b하면 뭘 뜻하게되나여?? 저 그리고 변수 선언부분 다 틀린건가여? int *b = *a[0][0]이게 맞는것같은데 아니면 그냥 int *b = a[0]이나.. 그냥 int *b = a 해도 되나여?
어라 뇌가 흐물흐물해진다 ㅋㅋ
&이게 address of고 *이게 content of면 반대로 알고있었나
아하 반대로알고있었음
&c = **c의 주소값이 나오는거네 **b 이게 a[0][0]인거고 &&b = &c인가여?
아 그런가여?? 머리아프넿ㅎㅎㅎ
&&b = &b인건가
&&b=&b
*a[0][0] 이것도 그냥 a[0][0]
그리고 위에서 int *c=&b;
아닌가? 헷갈리네 갑자기 ㅋ
그러네여 생각해보니깐 논리곱으로 인식하겐넹; 머 어차피 adress of라는 소리 들으니 이게 두번 거푸 써도 소용 없다는게 이해감.. 이래서 영어원서만 추천하는건가
이것의 주소값을 가리킨다느니 이런식으로 들었을땐 머리속에서 지그재그로 이해가던게 address of라니깐 일직선으로 이해감;