포인터가 가리키는 대상이 int면 4바이트, char면 1바이트 증/감 됩니다. 만약, int*타입을 가리키는 더블포인터라면 8바이트씩 증/감 됩니다.
@김도영-o1e
8 ай бұрын
@@withhoneyc 명쾌한 답변 정말 감사합니다!!
@jaehongkim1231
3 ай бұрын
저도 똑같이 혼동하였습니다. 혀니선생님의 답글을 보고, (21강 26:00경부터 참조하시면 도움되실겁니다.) 포인터의 자체의 타입은(배열의 첫번째 주소만 가르키는 datatype이니) 8바이트로 공통이고, 그 포인터가 가르키는 대상에서... 변수의 타입(int*, double*)별로 다음주소까지 점프하려면 그 크기byte만큼으로 이해하였습니다.
@Chung2nsik
Жыл бұрын
현쌤~ 영상에서 *p = 10; 이랑 p[0] = 10; 이 같다고 하셨는데 이 두 가지 대입 연산을 하기 위해서는 결국에 위쪽에 p라는 이름의 배열이 먼저 선언되어야 하는 거겠죠?
@withhoneyc
Жыл бұрын
아닙니다. int* p;를 선언한거예요. *과 [] 연산자는 포인터가 가리키는 메모리에 접근하는 역참조 연산자 입니다. 두 연산자는 같은 기능을 수행 합니다:)
@dangginji_study
11 ай бұрын
선생님~ 질문이 있습니다! int a[5] = {1, 2, 3, 4, 5}; int *p = &a; a[2] == *(a+2) == 3 이라면, 2[a] == *(2+a) == 3 도 같은 표현인가요? 컴파일 결과는 똑같이 3으로 출력되는데, 배열의 이름이 바뀐다거나 교환법칙이 적용되는것인가요? 어떻게 동작이 이루어지는지 알려주시면 감사하겠습니다.. :)
@withhoneyc
11 ай бұрын
교환법칙이 성립돼도 2[a]라는 표현은 맞지 않는거 같아요ㅠ 컴파일러가 허용한다 하더라도 쓰지 않는게 좋을 거 같아요.
@dangginji_study
11 ай бұрын
네 알겠습니다! 답변 감사합니다~~
@sujin101
10 күн бұрын
후반부에 포인터 p가 int a를 가리킬려면 int *p=&a; 가 아니고 int *p=a; 혹은 p=&a; 이렇게 돼야하는게 아닌가요? 선언과 동시에 할당할 때는 이렇게 쓰는건가요? 헷갈리네요ㅠ
@withhoneyc
10 күн бұрын
int* p = &a; 이 구문이 맞습니다:)
@jaekunyoo8509
Жыл бұрын
안녕하세요. 감사히 잘 봤어요. 개념 정립후 들으니 매우 재미있어요. 실제 사용시 적용이 쉽지 않겠지만 처리방법도 많이 배워서 해결해야겠지요. 10:11 2023년 8월 14일 월 15시 태평양 시간
@withhoneyc
Жыл бұрын
응원합니다🙏🙏🙏
@jaekunyoo8509
Жыл бұрын
@@withhoneyc 감사합니다. 2023년 8월 14일 월 19시56분 태평양 시간
@mingicho6333
Жыл бұрын
아하 그래서 배열에서 출력할 때는 a 단독으로 쓰지 않고 a[1] 처럼 뒤에 값도 적어준건가요?
@withhoneyc
Жыл бұрын
네네 맞아용😊
@대한민국인
7 ай бұрын
선생님 카페에서 나오는 실습 과제들은 강의 한 내용을 바탕으로 적은 건가욥? 따로 강의 파일은 없는거죠??
@withhoneyc
7 ай бұрын
네^^ 따로는 없는데… 카페 자료가 유튜브 영상 자료보다 훨씬 많이 있습니다.
@대한민국인
7 ай бұрын
@@withhoneyc 넵 감사합니다. 강의 듣고 카페 실습과제 타이핑 하다 보니 이해가 잘 갑니다 자료 감사합니다.
@돌라유캐
6 ай бұрын
배열의 이름이 포인터 그 자체는 아니지 않나요? 포인터는 변수의 주소를 할당받는 변수인데, 배열명은 주소를 할당받진 않으니 완벽한 포인터라고 할 순 없는거 아닌가요? 궁금해요!
@withhoneyc
6 ай бұрын
배열명은 포인터 상수로 간주될 수 있습니다. 배열은 일반적으로 정적으로 할당되며 메모리 주소를 나타내는 포인터로 취급됩니다. 그러나 배열명이 한 번 정의되면 다른 메모리 주소로 변경할 수 없어서 "상수"로 간주됩니다. 메모리는 배열의 크기에 따라 할당되지만 배열명은 따로 메모리가 할당되지 않습니다.
@눕눕놉놉
Жыл бұрын
선생님 질문있습니다! 이 강의랑 관계가 있을 지 모르겠지만, 문득 호기심이 생겨서요! 그 요즘에는 운영체제를 64비트를 많이 쓰는 데, 만약 엄청 큰 프로그램을 만든다는 가정하에 int형 자료형으로만 포인터를 쓰면, 반 밖에 못쓰겠네요?? 예를 들어 64비트 주소 메모리가 0 ~ 100까지 있다고 하면, int 형만 쓰면, 0~49까지 밖에 못쓰게 되니, 나머지 주소 50 ~ 100까지도 사용하려면, double형 포인터도 섞어서 써야 겠네요?? 즉 골고루? 사용해야되나요??
@withhoneyc
Жыл бұрын
질문하신 내용에 제 답변이 맞는지는 모르겠지만… 모든 타입을 int형 포인터에만 담을 수 없습니다. 데이터의 타입과 포인터의 타입은 일치해야 합니다. 따라서 골고루???필요합니다. 64비트 시스템에서 모든 포인터의 타입은 8바트 입미다.
@눕눕놉놉
Жыл бұрын
@@withhoneyc 아! 맞다 그럼 포인터는 운영체제에 따라서 4바이트가 되고, 8바이트가 될수 있고, 자료형은 자료형만으로 봐야 겠군요!
Пікірлер: 77