??
면접에서 포인터 질문 받았을때 int* int** 말하면 어캐됨?
익명(121.186)
2022-05-14 19:14
추천 30
댓글 9
다른 게시글
-
값방식의 포인터는 쉬운데 클래스등장하면 머리아픔 [3]익명(218.50) | 22.05.14추천 0
-
나 또 이직할 듯냥펀 1호기(118.235) | 22.05.14추천 0
-
면접관 질문에서 해당회사 수준을 보는거지 [15]ryu(ashrad) | 22.05.14추천 9
-
응애 나 코딩뉴비 파이썬 리스트 질문 [2]익명(39.7) | 22.05.14추천 0
-
위키야 외로워도 남자가 남자를 탐하지말자 [1]우물안개구..(lastpenguin) | 22.05.14추천 0
-
왜 고졸들은 다시 정신차리고 대학 안감? [3]익명(211.44) | 22.05.14추천 0
-
개발자면서 실력 안키우는게 극혐이긴해ryu(ashrad) | 22.05.14추천 0
-
뉴비들은 디시끄고 구글에서 한글문서는 피해라익명(221.167) | 22.05.14추천 0
-
스마트포인터 가독성 떡락하네 [2]익명(218.50) | 22.05.14추천 0
-
섹스 < 딸딸이헬마스터(supersaver) | 22.05.14추천 0
선언 int *은 인티저의 주소변수선언. int** 은 포인터의 주소변수 선언. - dc App
아냐. 의외로 어셈 단위에서 생각해보면 맞는 말이야. int x=3; 때리면 MOV DWORD PTR DS:[4095],3 대충 요런느낌인데 해당 주소에 포인터로 접근한다는 말임
근데 int*로 하면 c언어에서는 한 개가 아니라 여러개 타입 묶는 게 되는데 어셈 단위에서 이게 됨? 완전히 같지 않을듯.. 그만큼 추상화의 차이인건가
https://godbolt.org/
중간에 malloc같은 거 호출해서 추상화하는 거라 모르겠네 근데 c언어에서는 다르긴함 개념에 대한 얘기였음 당연히 int* x=30; 이런건 안되겠지..근데 내부적으로 메모리주소안의 값 사용한다는게 어셈 단위에서는 다 포인터 연산들어감
어셈 내부적으로 보면 LORD,STORE 같이 기계어로 또 연산 내부적으로 돌아가는데 pc에서 연산 한번 들어가고, PC(100) -> IR(5250(250 가져옴)) -> AC 에 들어감 주소에 있는 값 자체를 쓴다는 개념이 어셈에서 포인터고, c언어에서는 한번 추상화 더 들어가서 다른 변수에 있는 주소를 접근해서 가져다 쓴다는게 (얕은 참조로 최적화해서 사용하려고) 포인터의 개념인듯.. 이제 막 어셈 공부해서 잘 모르겠다
아니면 c언어에서 동적으로 메모리 할당용도로 쓰거나
해보니 어셈에서는 주소 참조하려고 하면 lea 라고 하네 결과적으로 Int*랑 int는 다른 개념이 맞구나 좋은 글이었음
근데 한 번 더 생각해보면 [4096]주소에 있는 값 쓰려고하면 앞에 ADD DWORD PTR DS:[4096],3 이렇게 하는데 *x+=3; 이거 아닌가? 그냥 관점 차이인것 같기도 하고.. lea로 가지고 있는 걸 포인터 형태로 볼 수 있냐/없냐 에 대한 문제인가.. 모르겠다
QWORD PTR DWORD PTR 차이라 다른게 맞겠네.. 많이 배웠다