와 강의 정말 잘 봤습니다ㅠㅠ 대학교에서 비전공자임에도 교양강의로 프로그래밍이 있어 '포인터 포인터..어렵다고 하던데 안해도 되겠지..?' 싶었는데, c언어에서는 포인터를 안사용할 수가 없더군요ㅠㅠ 개념도 제대로 안잡혀서 제가 쓰고 있는 주소참조, 값참조가 포인터랑 관련된 내용인지도 이 영상을 보고서야 깨달았어요.. 예고해주신 scanf 랑 문자열함수도 정말 기대하고 있습니다..! scanf는 이것저것 여러가지 자료형을 출력할 때 너무 까다롭고, 문자열 또한 다루기가 만만치 않아서 코딩 공부할 때마다 cpprefernce 들어가서 깨작깨작 찾아보고 다시 코딩하고 하는데, 한 번 정리해주시면 정말 감사할 것 같아요!
좋은 강의 감사합니다! 5:31 강의 듣던중 궁금한게 생겼는데 int타입 a변수는 62fe14, 62fe15, 62fe15, 62fe16 주소를 모두 쓰는건가요? 주소는 8byte를 나타낸다고 하셨는데 뒤의 char타입에서(19:51)는 1byte마다 주소를 갖는 것이 이해가 잘 안되네요.
거니님이 실수하신것 같은데, 메모리는 한칸이 8byte가 아니라 8bit, 즉 1byte입니다. 따라서 int타입의 변수는 메모리의 4칸(4byte)를 사용하게 됩니다. 문자는 각 1byte씩이므로, 한 문자가 메모리의 한칸씩 자리잡게 됩니다. 그래서 h를 가르키는 포인터에서 1을 더하면, 다음 칸에 위치한 e를 가르키게 되는거죠. 포인터의 크기는 시스템에 따라 다른데, x86 (32bit 시스템)에서는 포인터가 나타낼 수 있는 주소가 2^32개 이므로 (그래서 RAM을 4GB까지 밖에 못달아요...), 32bit, 즉 4byte이며, x64 (64bit 시스템)에서는 포인터가 나타낼 수 있는 주소가 2^64개로써(따라서 64bit운영체제로 바뀌며 달 수 있는 RAM의 크기가 엄청나게 커졌습니다.), 64bit, 즉 8byte의 크기를 가지게 됩니다. 거니님께서 컴파일했을 때 포인터가 8byte가 나온것은, 만든 응용프로그램(.exe)가 64bit Release로 컴파일되서 그렇고, 이녀석을 32bit Release로 바꾸면 4byte가 뜹니다.
@@조상훈-f1i 네, 모든 포인터는 가르키는 타입이 무엇이든간에, 언제나 일정한 크기를 차지합니다. 이렇게 일반적인 타입 한개보다 큰 메모리를 소모하지만, 값을 복사하지 않고도, 다른 함수등에서 사용 가능하며, 원본을 바꿀 수 있다는 점에서 포인터는 매우 중요하고, 효율적입니다. 또한, 나중에 동적할당이라는 개념을 배우면, 포인터의 중요성이 다시 한번 부각되게 됩니다.
거니님~ swap함수에서 int타입의 temp에 초깃값을 설정해주지 않은건 어차피 num들이 들어오기 때문인건가요? 전역/적 변수로 설정한다면 알아서 0으로 되니까 상관없을텐데 지역변수는 초깃값이 있어야 하는 것 아닌가요??? 음....아니면 int타입의 temp을 메모리 설정하고 그안에는 아무것도 넣어주지 않았기 때문에 비로소 num들이 스왑할 공간이 마련된건가요???
포인터 공부하다 추가로 공부할겸 유튜브 보고있는데 와 초보자 눈높히에서 설명을 너무 잘해주시네요 ㄷㄷ 그리고 연산자의 순서부분.. 저는 포인터에 +1 하면 다음 주소값만큼 이동해라 라는 뜻으로 알고 포인터에는 +1 못하나 생각했었는데 가로를 하면 되는군요..ㄷㄷ 부족한 지식 더 채워갑니다
거니님 질문이 있습니다! int형 배열애서 포인터로 배열을 접근할떄, printf("%d",*(ptr+4))로, 즉 4를 더해야만 다음인덱스로 간다고 하셨는데, 비주얼스튜디오로 하니깐 1만 더해도 다음 인덱스로 가더라고요... +4를하니 4번 만큼 간 인덱스가 출력이 되더라고요... 뭐가 맞는거죠? 거니님의 영상 덕분에 많은걸배웁니다!!
예가 좀 잘못된 것 같은데 지역변수때문에 값 변환 안되는거면 함수 밖으로 빼서 전역변수 만들면 안되는 건가요? 뺐는데 리턴값을 어떻게 둬야할지 모르겠어서 막혔네요 이해는 잘 됐는데 이 강의에서 예시들은 걸로는 적절한 쓰임을 모르겠어요 값 --> (포인터를 통해) 주소 --> 주소에 대한 값 이렇게 변환하는게 무슨 의민지... 그냥 처음부터 값 가지고 놀면 되지.. 헛수고 느낌..
#include int main(){ int a = 5; int* ptr; ptr = &a; printf("%x", ptr); printf(" %x", &a); return 0; } 이렇게 만들어서 실행 시켰더니 두 개의 값은 똑같이 나오는데 실행을 시킬 때마다 다른 값이 출력 됩니다. 어떻게 해야 할까요?
@@EJ-lz6nc 32비트로 나타낼 수 있는 최대값인 2^32가 4GB(2^2*2^10*2^10*2^10 = 2^32)이기 때문입니다. 마찬가지로 64비트로 나타낼 수 있는 최대값도 2^64인 16EB(2^4*2^10*2^10*2^10*2^10*2^10*2^10)이죠.
드디어!! 올려주셔서 포기안해주셔서 감사합니다 ㅠㅜ 담편도 기대해요
교수님도 이해 시키지 못 한 저를 이해 시켜주시다니 세상 감사합니다
와 강의력 대단하시네요.. 27분 순삭 ㅋㅋㅋㅋ
뭔가 아련한 배경음악이 평화롭네요. 잘 봤습니다. 이해하기 쉬운 설명 고맙습니다.
오빠 사랑합니다... 괜히 노잼 대학 강의 붙잡고 있었네요 이렇게 재밌는 강의를 두고... 그리고 진짜 귀여우십니다... 아이러브유
거니 형 형만큼 c언어 가르치는 사람이 없어서 유튭보고 배울라하는데 담편도 빨리 올려줬으면 좋겠어 ㅎ
와 강의 정말 잘 봤습니다ㅠㅠ 대학교에서 비전공자임에도 교양강의로 프로그래밍이 있어 '포인터 포인터..어렵다고 하던데 안해도 되겠지..?' 싶었는데, c언어에서는 포인터를 안사용할 수가 없더군요ㅠㅠ 개념도 제대로 안잡혀서 제가 쓰고 있는 주소참조, 값참조가 포인터랑 관련된 내용인지도 이 영상을 보고서야 깨달았어요..
예고해주신 scanf 랑 문자열함수도 정말 기대하고 있습니다..! scanf는 이것저것 여러가지 자료형을 출력할 때 너무 까다롭고, 문자열 또한 다루기가 만만치 않아서 코딩 공부할 때마다 cpprefernce 들어가서 깨작깨작 찾아보고 다시 코딩하고 하는데, 한 번 정리해주시면 정말 감사할 것 같아요!
대학교때 거니님 강좌를 봤다면 포기하지 않았을텐데...^^;;; 좋은 강좌 감사합니다.
정보처리기사 시험 준비하면서 수험서로는 대략적으로 밖에 모르던 내용들을 쓰임새나 활용성까지 알게 되니 재미있어요. 좋은 강의 감사합니다!
c언어 강의 계속 기다리고있었는데 드디어 나왔네요!!! 항상 유익한 영상 감사합니다 !! :)
다른데는 비유를 너무 많이 들어서 헷갈렸는데 코드로 딱 알기 쉽게 해주니까 좋아요
좋은 강의 감사합니다!
5:31 강의 듣던중 궁금한게 생겼는데 int타입 a변수는 62fe14, 62fe15, 62fe15, 62fe16 주소를 모두 쓰는건가요? 주소는 8byte를 나타낸다고 하셨는데 뒤의 char타입에서(19:51)는 1byte마다 주소를 갖는 것이 이해가 잘 안되네요.
거니님이 실수하신것 같은데, 메모리는 한칸이 8byte가 아니라 8bit, 즉 1byte입니다. 따라서 int타입의 변수는 메모리의 4칸(4byte)를 사용하게 됩니다.
문자는 각 1byte씩이므로, 한 문자가 메모리의 한칸씩 자리잡게 됩니다.
그래서 h를 가르키는 포인터에서 1을 더하면, 다음 칸에 위치한 e를 가르키게 되는거죠.
포인터의 크기는 시스템에 따라 다른데, x86 (32bit 시스템)에서는 포인터가 나타낼 수 있는 주소가 2^32개 이므로 (그래서 RAM을 4GB까지 밖에 못달아요...), 32bit, 즉 4byte이며,
x64 (64bit 시스템)에서는 포인터가 나타낼 수 있는 주소가 2^64개로써(따라서 64bit운영체제로 바뀌며 달 수 있는 RAM의 크기가 엄청나게 커졌습니다.), 64bit, 즉 8byte의 크기를 가지게 됩니다.
거니님께서 컴파일했을 때 포인터가 8byte가 나온것은, 만든 응용프로그램(.exe)가 64bit Release로 컴파일되서 그렇고, 이녀석을 32bit Release로 바꾸면 4byte가 뜹니다.
@@유태우-d6z 답변 감사합니다! 그렇다면 1byte짜리 메모리 한칸을 지목하기 위해 8byte짜리 주소를 달아두게 되는 건가요?
@@조상훈-f1i 네, 모든 포인터는 가르키는 타입이 무엇이든간에, 언제나 일정한 크기를 차지합니다.
이렇게 일반적인 타입 한개보다 큰 메모리를 소모하지만, 값을 복사하지 않고도, 다른 함수등에서 사용 가능하며, 원본을 바꿀 수 있다는 점에서 포인터는 매우 중요하고, 효율적입니다.
또한, 나중에 동적할당이라는 개념을 배우면, 포인터의 중요성이 다시 한번 부각되게 됩니다.
@@유태우-d6z 이해하는데 많은 도움 되었습니다. 친절한 설명 감사합니다!
이 영상 처음 봤을땐 봐도 어려웠어서 포기할까 생각했어요 ㅜㅜ 그래도 정신 차리고 두번 세번 보니까 거의 완전 이해 했어요 !!! 감사합니다 거니님 ㅎㅎ 확실히 서로 대화 하듯이 쉽게 설명 해 주시니까 어려워도 적응 하기 훨씬 쉬웠습니당 ㅎㅎ 감사합니다!!.
아 존잼......... 프로그래밍 언어 수업 들을 때 늘 흥미로웠던 경험이 새록새록 떠오르면서..... 나는 역시 이 길인 건가....... 설레발치는 휴학생입니다....
거니님 C언어 너무 유익하고 잘 보고있습니다 근데 코딩을 처음접하시는분들은 C언어에 대한 진입장벽을 느낄수있으니 입문하기 쉬운 29살의 파이썬 with 거니 강좌도 꼭 올려주셨으면 너무 영광일듯합니다 다음 강좌또한 생각중이시면 꼭 파이썬 강좌를 고려해주세요 !! :)
이런 영상에 좋아요가 몇개없다니ㅠ 슬픕니다.
진짜 잘보고가요 감사합니다~^^
빼먹을 정보가 하나도 없네요 감사합니다😍😍
포인터 진짜 이해안되고 어려웠는데 이거 보니까 별거아니게 느껴지네요 그동안 포인터때문에 왜그렇게 고생했나 싶을만큼ㅋㅋㅋㅋ 정말 감사합니다 배속 안올리고 시간 순삭됐어요!!
정말 감사합니다 포인터에 대해서 이해가 됐어요 ㅜㅜ 가리킨다를 가르친다라고 해서 처음엔 의미상 혼동이 오긴 했었는데 큰틀에서 도움 많이 됐습니다 감사합니다
내가 진짜 7년전 정확히 20살 때 c언어를 포인터 때문에 포기했거든요? 아 동맥이 확 뚫리네요 그냥.
진짜 도움이 되는 영상입니다...
다음 시리즈도 빨리 나왔으면 좋겠어여 ㅠ
이제까지 본 포인터 설명중 제일 야무지네
진짜 너무 좋은 설명이네요! 감사합니다 :)
거니님~ swap함수에서 int타입의 temp에 초깃값을 설정해주지 않은건 어차피 num들이 들어오기 때문인건가요?
전역/적 변수로 설정한다면 알아서 0으로 되니까 상관없을텐데
지역변수는 초깃값이 있어야 하는 것 아닌가요???
음....아니면 int타입의 temp을 메모리 설정하고 그안에는 아무것도 넣어주지 않았기 때문에
비로소 num들이 스왑할 공간이 마련된건가요???
와 대치동1타강사 못지않는 언어의 마술사다 귀에 팍팍 꽂히네요
부산에서 전자공학 전공중인 학생입니다.
방학을 맞아서 영어와 함께 영상처리를 위한 씨언어를 위해
학기중에 배운 씨언어를 복습한다고 거니님 영상을 알게 되었는데요
ㅋㅋㅋㅋ진짜 솔직히 학교에서 교수님이 가르쳐 주시는 거 보다 깔끔합니다 ..
당연하지 교수강의 줘도 안 봄, 대학교 졸업해야 하니 보는 거지
학교수업을 놓쳐서 힘들었는데 감사합니다~
포인터 공부하다 추가로 공부할겸 유튜브 보고있는데
와 초보자 눈높히에서 설명을 너무 잘해주시네요 ㄷㄷ
그리고 연산자의 순서부분..
저는 포인터에 +1 하면 다음 주소값만큼 이동해라 라는 뜻으로 알고
포인터에는 +1 못하나 생각했었는데 가로를 하면 되는군요..ㄷㄷ
부족한 지식 더 채워갑니다
감사합니다! 15:50 쯤에 &a, &b라고 안쓰고 그냥 a,b라고 써도 스왑 되던데 이거는 왜그런가요?
키보드 소리가 너무 경쾌하고 이쁘네요. 그 키보드 제품명을 알려줄 수 있으세요?
말투 너무 웃겨요 ㅋㅋㅋㅋㅋㅋ 장사꾼같으셔(?) ㅎㅎㅎㅎㅎ 약간 아리까리했는데 도움 됐어요 감사합니다!!
거니님 질문이 있습니다! int형 배열애서 포인터로 배열을 접근할떄, printf("%d",*(ptr+4))로, 즉 4를 더해야만 다음인덱스로 간다고 하셨는데, 비주얼스튜디오로 하니깐 1만 더해도 다음 인덱스로 가더라고요... +4를하니 4번 만큼 간 인덱스가 출력이 되더라고요... 뭐가 맞는거죠? 거니님의 영상 덕분에 많은걸배웁니다!!
학교에서는 냅다 외우라고해서 마냥 어려웠는데 이렇게 설명 들으니까 이해 잘되는거같아요.. 감사합니다!!
형 진짜 설명 잘한다 덕분에 도움 많이 되었어
진짜 저도 엄청 기다렸어요. 이제 30살의 c언어인건가요? ㅎㅎ
이분 진짜 잘가르치시네..ㄷㄷ
감사합니다 거니님 🙏
12:19
14:34
진짜 너무 감사합니다 이해가 너무 잘되네요, 근데 가리키다랑 가르치다 구분해서 사용해주실 수 있을까요 ㅜㅜ
사람이 전부 완벽할순없으니 봐줍시다
자바공부중인데 헷갈리던게 이영상을 보고 암이 낳았습니다. 설명 진짜 잘하시네요
강의 만들어주셔서 감사합니다. 잘 봤습니다!
* 곱하기도 씁니다...
10:42 포인터 활용
헉 전 왜 sizeof(float*) 이런식으로 출력하면 4바이트가 뜰까요...? 포인터가 pc마다 크기가 다를 수 있나요?
와 설명 대박입니다... 정말 감사합니다!
14:00 스왑~
16:13 temp는 왜 *를 붙히면 안되나요??
포인터 공부하다 어려워서 찾아왔는데, 쉽게 잘 가르치시네요. 감사감사
26:14 아 여기부터 개웃김 ㅠㅠㅋㅋㅋㅋㅋ급발진 개웃겨진짜
설명 정말좋네요 감사합니다.
예가 좀 잘못된 것 같은데
지역변수때문에 값 변환 안되는거면 함수 밖으로 빼서 전역변수 만들면 안되는 건가요?
뺐는데 리턴값을 어떻게 둬야할지 모르겠어서 막혔네요
이해는 잘 됐는데 이 강의에서 예시들은 걸로는 적절한 쓰임을 모르겠어요
값 --> (포인터를 통해) 주소 --> 주소에 대한 값 이렇게 변환하는게
무슨 의민지...
그냥 처음부터 값 가지고 놀면 되지.. 헛수고 느낌..
오빠 구조체 강의는 없는 거죠...?ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ
포인터가 이렇게 이해하기 쉬운거였나?🤔
21:00 연산순서
대학교 강의 듣다 멘붕와서 봤는데 단번에 이해가 되네요
변수의 포인터의 사이즈가 영상에선 8바이트라고 나오는데
제가 직접해보면 4바이트라고나오고..... 책에서도 4바이트고 ... 뭐가맞는건가요 아시는부 ㅠㅠ
강의 잘 보고있습니다. 포인터 이후의 강의는 없나요?
예를 들어서 설명을 해야 알아 듣지 그렇게 말해가지곤 못알아 듣겠네, 이 호랑말코야!
26:48 매모리가 네모린지 메머리가 내머린지
님 진짜 29살입니까? 동안인데 심지어 동갑임
%c에서 c는 어느 유형의 변수를 받는 건가요?
c언어 공부중이라 설명너무 잘해주시고 너무 유익한데 다만,, 배경음악때문에 집중이 잘 안되요...흑ㅠㅠ
사랑해요 거니님^-^
다음 강의 언재나오나요...
5빠거니님사랑해요잘생겼어요♥
알람이지금떴어요ㅠ
와..감사합니다..
대박 드디어...
포인터 강의에 구독 싸고 갑니다 !!
*p 와 p*차이가 뭔가요..??
저희 강사님께 죄송하지만 와 정말 설명 잘하시네요
오 감사합니다!
#include
int main(){
int a = 5;
int* ptr;
ptr = &a;
printf("%x", ptr);
printf("
%x", &a);
return 0;
}
이렇게 만들어서 실행 시켰더니 두 개의 값은 똑같이 나오는데 실행을 시킬 때마다 다른 값이 출력 됩니다. 어떻게 해야 할까요?
건희님, 건희님 구독자님들
3x4 행렬 계산의 합 구하는법 ( sub로 계산하고 main으로 출력하기) 혹시 아시는 분 계시면 부탁드리겠습니다 ㅠ
최고에여..
다음강의 기다리고 있습니다..
이미 올라와있습니다.
거니형 오랜만이양
시험치기 2시간 전입니다 벼락치기 하고갈게요
가리키다. = point
가르키다 = x
가르치다. = teach
:thumsup
저 이유 때문에 32비트에서 4GB까지의 메모리만 사용할 수 있던 것이군요
뀨앙지윤 8*4이기 때문인거죠...? 8기가 램에선 64비트 가능한것도 같은원리인건가요...?
말인 즉, 1row가 1GB....?
@@EJ-lz6nc 32비트로 나타낼 수 있는 최대값인 2^32가 4GB(2^2*2^10*2^10*2^10 = 2^32)이기 때문입니다.
마찬가지로 64비트로 나타낼 수 있는 최대값도 2^64인 16EB(2^4*2^10*2^10*2^10*2^10*2^10*2^10)이죠.
교수가 강의를 ㅈ같이못해서 찾아와봤는데
역시 유튜브가 교수를 능가하네요...
아니 형 귀엽게 생기면 다야?
2:46 나주에 배가 맛있죠
0:37
이제 30살의 c언어 아닌가요 ㅋㅋㅋ
너어는 진짜.....
컴공인데 이형꺼 보고 포인터 이해함 ㅋㅋㄹㅃㅃ
25:10 정말 c언어는 에러 가르쳐주는 걸 못하는 것 같습니다 ㅋㅋㅋ
내 모리가 내 모린지 메 모리가 내 모린지
가르치다 가르키다 말고 가리키다...
형 설명에 쌌어 ㅠㅠㅠㅠ
좋은 강의 감사합니다! 배경음만 빼주시면 완벽할꺼 같아요! :)
'가리키다'라고 해야하는데 '가르치다'라고 했다가, '가르키다'라고 했다가...
포인터 얌얌얌
ㅎㅎ
감사합니다
오
소 굳
말하는거 넘 웃기네