조금 헤갈려서 반복해서 듣었는데 다음과 같이 이해하는게 맞을 까요? a: (포인터변수의) 메모리의 주소값 *a : (포인터변수의) 메모리의 주소에 저장 된 값 &b : (일반 변수의) 메모리 주소 값 *a = &b; 하게 되면 a는 변수의 b의 메모리 주소 값 *a는 변수의 b에 저장된 실제 데이터 값
안녕하세요~~ 먼저 답변이 늦어져서 죄송합니다. 위에 있는건 이해하신 내용이 맞습니다. 아래는 조금 문법적인 부분이 있는데, int *a = &b; 이건 이해하신게 맞습니다. 선언할때 주소값을 넣게 되니깐요 헌데, 선언을 위해서 해버리고, *a = &b; 의 의미는 a 가 가리키고 있는 공간에다가 b의 주소값을 넣어라 라는 의미가 되서 엉뚱한 결과가 나오게 됩니다. ^^ 도움이 되셨으면 좋겠습니다.
좋은 강의 감사드립니다! 제가 이해한게 맞을까요? int *a; *a = 10; -> 이 경우는 포인터변수 a가 가리키는 메모리 주소 ‘안에 들어있는 값’을 10으로 넣어준다. ------------------- int *a = 10; -> 이 경우는 포인터변수 a가 가리키는 ‘메모리 주소값’을 메모리주소 10으로 변경한다. ----------------- 자바만 공부한 입장에서는 상당히 비직관적이네요ㅋㅋ
안녕하세요... 첫번째 경우, 그러니깐 int *a; *a = 10; 요 설명은 맞습니다. 근데 두번째, int *a = 10; 설명은 맞는데, 10이라는 메모리 주소를 알수가 없기 때문에, 저런식으로 하게 되면 오류가 발생을 하게 되요.. &b; 이런식으로 주소값을 넣어줘야 정상 수행이 됩니다. 도움이 되셨으면 좋겠습니다. ^^
흥달쌤~ 시험 3회차 80점정도로 합격할 것 같습니다. 코드는 한 문제 빼고 다 맞은거 같아요 !! 사람들이 제일 많이 볼거 같아서 포인터 강의 이 곳에 댓글을 남겨요 혹시나 사람들이 저 처럼 인강을 결제 할까 말까 고민하시는 분들!!... 저는 흥달썜 강의를 시험 2주 전에 결제해서 강의를 들었고 그 전 까지는 혼자 맨땅에 헤딩 하면서 한달을 보냈어요 공부는 그래도 하루에 8시간 이상 씩 한 거 같아요.. 하지만 혼자 하다보니 개념이 잘 잡히지 않았거든요 그래서 여기저기 흩어져 있는 개념들을 모아서 문제를 풀곤 했는데 참 힘들었어요... 근데 흥달쌤 강의를 듣고 여기저기 흩어져 있는 개념들이 하나로 모이기 시작하면서 이제 눈에 보이기 시작 하더라고요 !! 특히 자바가요 씨언어는 사실 정말 순차적인 개념과 실수 줄이기만 하면 되지만 자바는 개념을 잡기가 참 힘들더라고요 . .특히 상속이나 하이딩 부분이나 그 중 생성자 부분이 말이에요 여러분 자바는 정말 흥달쌤이 잘 가리키신다고 저는 제가 느꼈고 여러분도 경험하시길 바래요.. 자바는 개념만 똑바로 잡으면 문제를 틀릴 일이 엄청 적어요.. 저는 시험 3일 전엔 자바 개념을 다 알고나니 자바 문제는 풀어보지도 않았네요 C언어 실수 잦은 부분이랑 파이썬 괄호 , 대괄호 그런거나 보고있었지.. 그리고 모르는거 있으면 댓글 다시면 흥달쌤이 친절하게 알려주십니다.. 하루 안에요 !! 여러분 꼭 강의 결제해서 들어보시길 추천드려요 흥달쌤 제가 질문 참 많이 했는데 미안해서 제가 질문이 참 많죠... 이렇게 댓글 단 적 있거든요 덕분에 한 번에 붙었습니다.. 감사합니다
안녕하세요~~ 한번에 합격하기가 쉽지 않은데, 그동안 정말 수고 많으셨습니다. 제가 작은 도움이라도 될 수 있었던 점, 그저 감사하게 생각할 따름입니다. 제가 수험생 입장이 아니다 보니, 이게 정말 쉬울까 어려울까, 고민을 많이 하면서, 최대한 쉽게 강의하려고 노력은 하는데, 그게 쉽지는 않더라구요~~ 올해 그런 공부를 열심히 했으니, 내년에는 좀 더 나은 강의를 만들도록 노력하겠습니다. 응원 해주셔서 너무 감사드리고, 시험보고 오시느라 수고 많으셨습니다. 합격하신것도 진심으로 축하드립니다. ^^
안녕하세요~~~ c는 101이라는 값을 가지고 있습니다. 그래서 printf(c) 라고 가정한다면 101이 출력이 되지요. 헌데, printf 할때, c주소가 가리키고 있는 주소의 값을 출력해라 라고 하는, *c 라고 했기 때문에 b 변수의 값이 출력되게 됩니다. 도움이 되셨음 좋겠습니다. ^^
음...포인터 변수에 값을 넣는건 가능합니다. 헌데 그렇게 넣으면 완전히 이상한 결과가 출력되어서, 프로그램을 할때도 그런건 염두에 두고 개발을 합니다. ^^ 일반값을 넣으면 사람이 알수 없는 이상한 메모리 영역을 참조해버리는 상황이 발생을 할 수 있어서요~~ 감사합니다. ^^
안녕하세요~~~ %p 면 주소값을 헥사 값으로 표현하는건데, 아마 %d 가 안되는건 그만한 값을 표현할 수가 없어서 일꺼에요~~ ideone.com 이런 웹 컴파일러를 이용하시면 컴파일 버전 문제는 나오지 않을꺼에요~~ 여러 웹 컴파일러가 있으니 그런걸 활용해주세요 감사합니다. ^^
안녕하세요 완강하고 포인터의 이해도가 완벽하지 않아서 다시 보고있는데 n잡 10챕터 4강 c언어 강의 35번에서 int *C = &B; 이렇게 나오는데 이거랑 이 강의에서 나오는 int *a; a=&b; 이거랑 똑같나요? 강의를 들어보니까 똑같이 표현되고 있는거 같아서 여쭤봅니다!!
넵...똑같습니다~~ 첫번째꺼는 초기값으로 바로 지정을 한거고요~ 두번재꺼는 일단 포인터를 만들어놓고, 그리고 그 다음에 그 포인터변수에다가 주소값을 대입한 형태입니다. int *c; 이렇게 표현하는게 c 변수에는 주소값이 들어갈꺼다 라고 표현한거고, 그 이후에 c = &b; 이런 표현도 가능합니다. 감사합니다. ^^
마지막 문제를 보다가 궁금한 점이 생겨서 질문합니다! int A = 10, B; int *C = &B; B = A--; 이 부분에서 A--는 증감연산자가 후위에 있어서 B에 A의 값인 10을 할당하고 A가 9로 바뀌신다고 하셨는데 이해는 했는데요... 자바스크립트를 쓰다가 와서 그런지 헷갈리네요! A -= 1 과 같은 재할당의 형태가 아닌데 실제로 A의 값이 증감연산자를 통해서 직접 10에서 9로 재할당처럼 변화가 되는 건지 궁금해요
11:03 문제 질문이 있습니다. int *C = &B; 문장이 있는데, 이러면 C가 아니라, *C에 B의 주소(&B)가 대입되어서 *C를 출력하면 B의 주소(괴상한 값)이 출력되어야 하는 것 아닌지요? 먼저 int *C;를 선언한뒤 C=&B;이렇게 대입해줘야 문제의 답과 같은 결과가 출력되지 않는지 의문입니다.
@@HeungSsaem 친절한 답변 감사합니다. 문법적인 내용이었군요! 그리고 ㅠㅠ 아까 1강에서 곧 내려갈수도있다고 답변해주셨던데 혹시 언제 내려가나요 ㅠㅠ 이번달까진 다 들을 것 같은데... C언어 쭉 듣고있는데 강의력이 좋으셔서 유료로 정처기 실기 강의도 한번 들어보고자 합니다! 좋은 강의 감사합니다
안녕하세요~~ 컴파일러의 특성때문에 주소값을 지정받지 못해서 오류가 발생할 수 있습니다. 이 코드는 정확하게 수행을 하려고 하는 목적이 아니라, 포인터에 대한 이해를 하려고 하는 목적이기 때문에, 비쥬얼 스튜디오에서는 오류가 발생할 수 있고, C 컴파일러에서도 원하지 않는 이상한 값이 출력될 수 있습니다. 감사합니다. ^^
선생님 엔잡에서 실기 강의 감사히 잘 듣고 있는 수강생입니다 감사합니다. 제가 드리고 싶은 질문은 int *C라고 했을때 이 C라는 포인터 공간에는 오직 '주소값'만 들어갈 수 있는건지 궁금합니다. 이 문제에서 int B는 결국 30이라는 값과 101번지라는 주소값 이렇게 각각 2가지를 가지는 데 int *C는 라는 공간에는 주소값만 가질 수 있는 거고, 30이란 값은 int *C의 값이 될 수 있는 건지 궁금합니다. 30은 int B의 값이고 *C는 그저 그걸 방향만 가리키고 있는건가요?
안녕하세요~~~ 포인터 변수도 마찬가지로 어딘가에 선언이 되어 있습니다. 그러니깐 int *c; 를 했을때, c 는 200번지의 주소값을 가지고 있는거고, 그 200번지에는 일반적인 값이 아닌 주소값을 가지게 됩니다. ruclips.net/video/PRp3Ah7yBNY/видео.html 이 영상을 한번 참고해주시면 좋을 듯 합니다. 감사합니다. ^^
질문이 있습니다! a앞에 *가 붙으면 a주소가 가리키는 값이라고해서 10:00문제는 이해했는데요, 그래서 13:00문제에 c주소가 가리키는 값에 b의 주소가 들어간다고 생각했습니다 근데 왜 c에 b의주소가 들어가는 건지 이해가 안됩니다ㅠ 바로 앞 문제에서는 a=&b 이고 여기서는 *C=&B 인데 왜 같은 방식으로 풀이되나요??
안녕하세요~~~ 이게 선언의 문제인데요.. 포인터 변수를 최초로 선언할때만, * 를 이용해서 주소를 할당할 수 있습니다. int *a = &b; 처음에만 b의 주소를 a 에 할당하게 되고요.. 그 이후에 사용되는 *a 는 a 주소값의 값이 됩니다. 선언이후에 주소를 넣으려면, int *a; a = &b; 이렇게 사용해야 합니다. *a = &b; 이렇게 하게 되면, a의 값에다가 b의 주소값을 넣는 형태이기 때문에 이상한 결과가 나오게 됩니다. 감사합니다. ^^
안녕하세요~~~ b는 일반 변수이기 때문에 메모리 어딘가에 b라는 영역이 만들어지게 되고, 그 공간에 10이라는 값이 할당이 됩니다. 이때 b 라는 변수가 메모리의 103번지에 있다고 가정을 하고 있습니다. 그리고 a 는 포인터 변수가 됩니다. 포인터 변수는 메모리의 주소값을 가지게 됩니다. a = &b 를 했기 때문에, b 가 위치하고 있는 곳의 주소값 103번지를 a 에 대입하게 됩니다. a 와 *a 는 공간의 차이가 아니라, a 는 메모리 어딘가에 그냥 변수처럼 공간이 만들어지게 되는거고, *a 는 그 a 변수 공간에 있는 주소값의 값을 나타내게 됩니다. printf("%d ",a) = 103 printf("%d ",*a) = 10 printf("%d ",b) = 10 그리고 이 부분까지는 맞지만, *b 는 전혀 엉뚱한 결과가 나오게 됩니다. b는 포인터변수가 아닌 일반 변수입니다. 포인터 변수만, 해당 변수내에 주소값이 들어가게 되고, 가리키고 있는 주소의 값을 출력하기 위해서 *a 형태를 사용하게 됩니다. 감사합니다. ^^
3번째 듣고있습니다. 6분32초쯤에 printd(%d,a) 는 102라는 거는 자기가 임의로 지정한 값이니깐 101이 될수도 있고 103 104 105 이런식으로 나올 수 있는건가요?? 그리고 선생님 유료강의도 듣고있는데 프로그래밍은 바로 문제로 들어가시던데 이걸 먼저 듣는게 맞죠??
안녕하세요~~~ 번지수는 임의로 지정을 하는거기 때문에 뭘로 해도 상관은 없습니다. 그리고 기사강의에 보면 NEW 라고 해서 지금 업로드 되고 있는 강의가 있습니다. 그걸 바로 봐주시면 됩니다. 깨알 C언어나 다른 문제들에서 질문 주신 내용들을 바탕으로 좀 더 쉽게 설명을 하고 있거든요~~~ 그걸 바로 봐주세요~~ 감사합니다. ^^
깨알 C언어 | 23. 포인터 # 포인터란? 1:23 메모리의 주소값, # 포인트 변수 선언 2:02 정답 int *a(포인터 변수 선언) 이후 부터는 *a? a의 값은, a가 가지고 있는 주소값에다가 포인트 변수 선언과 동시에 어떤 주소값과 매칭이 됌// 배열과 비슷, 값 자체가 아니라 레퍼런스를 참조, a? 레퍼런스 출력 a*? 레퍼런스의 값을 출력 # 변수의 주소 찾기 7:04 정답 모든 변수는 주소값을 가지고 있다, #a=&b? b의 주소값, 문. 10:45 정답 &B? B의 주소값, 답. 15:30
안녕하세요! c언어 배운지 이제 2달이 다 되어가네요 다른 학원에서 강의 듣는데 템포가 너무 빨라서 모르는 부분을 집고 가기 어려워서 유튜브로 찾다보니 알게 되었습니다!! 아직 끝까지 수강듣지 못했지만 너무너무 이해하기도 쉬워서 좋아요 :) 이제 학원에서 한창 다차원 포인터를 배우는 중인데 malloc?? 동적 할당메모리 이였나? 배우는 중인데, 머리로는 이해는 되는데 코딩으로 구현하기가 너무 어렵더라구요. 혹시 이 부분에 대해서도 이론적으로나마 강의를 올려주실 수 있을까요? 아니면 다른 유료강의가 있으신가요? 선생님 덕분에 c언어가 한 걸음 더 가벼워졌어요, 60강의까지 힘차게 달리겠습니다! 감사합니다~
안녕하세요~~~ 2개월동안 공부하셨다면 국비지원 과정을 듣고 계신건가요?? malloc 함수가 워낙에 여러군데 사용이 되어서, 예제를 좀 주신다면 그거에 대해서는 따로 답변을 해드릴께요..^^ C언어 어렵지만, 익숙해지면 어떤 문제도 쉽게 푸실 수 있을꺼에요.. 그리고 제가 C언어 개념은 따로 강의하지 않고 시험용으로만 강의를 촬영해서, 개발과정을 들으신다면 제가 진행하는 유료강의가 크게 도움이 되시진 않을꺼에요. 공부하시다가 모르는 부분은 예제를 보내주세요..^^ 감사합니다. ^^
@@HeungSsaem 정산기 취득 목적으로 원래 국비과정으로 들으려고 했었는데 이전에 받은적이 있어서 전액지원이 불가능 한 상태여서 무작정 정처기공부하는 것 보다는 c언어나 자바, sql듣고 정처기 수업 듣는게 정처기 시험 준비하는데 좋을거다라고 하시면서 따로 학원강의 끊어서 듣고 있습니다! c언어 프로그래밍은 그 과정에서 하다보니 재밌어서 유튜브로 따로 강의 찾아보다가 홍달쌤영상이 가장 저에게 코드가 맞아서 편하게 듣고있어요~ :) 이 예시는 /*동적 메모리를 할당을 사용하여 입력 및 출력하기*/ 라고 해서 주신 예제이신데 실행시켜도 오류가 나고 동적 메모리에 대한 기초적인 코딩 구조, 동작이해도등이 이해가 안가서 이걸 봐도 어떻게 동작하는지 조차 몰라서 질문을 여쭤봤습니다! #include #include void main() { char* pname = (char*)malloc(32); if (pname == null) { printf("err!! "); } printf("name?"); scanf_s("%s", pname, 32); printf("my name is %s", pname); free(pname); }
그동안 포인터에 대해 많이 배웠는데 처음으로 이해가됩니다...흥달쌤..갓달쌤... 이것도 처음들었을 땐 이해 안되었는데.. 2-3번듣고 스스로 풀기 연습하니 이해되네요 포포자 모두들 파이팅..!
흥달샘 감사합니다❤
진짜 포인터 틀릴각오 하고있었는데... 감사합니다 진짜 대단하시네요
포인터 틀리시면 안되요~~
필기고 실기고 단순 포인터 문제는 꼭 맞춰주셔야해요 ^^
포인터 문제 나오면 꼭 맞춰주세요~~
감사합니다.
형님....와...지려버리네 고맙습니다
독학 2번 떨어지고, 깨알 듣고있는데 이해 됩니다. 감사합니다. n잡러실기 들으러 갈께요. 감사합니다.
안녕하세요~~~
이해가 되신다니 다행입니다.
이번 실기에서는 꼭 합격하셔서 좋은 소식 전해주세요~~
감사합니다. ^^
너무 이해가 쏙쏙 되어서 신기할 정도입니다!! 저번에 정처기 실기봤을 때 프로그래밍은 한 문제도 못 맞췄는데😅 이번엔 달라질 것 같아요 정말 감사합니다 :)
이번에느 모든 문제 다 맞추실 수 있을꺼에요~~
거의 대부분의 문제 나올만한 개념들은 다 들어가 있으니 마지막까지 꼭 익숙해지셔서 합격하셨으면 좋겠습니다.
감사합니다. ^^
이해가 쏙쏙 됩니다😊
감사합니다~!
어제인가 배열 들어가셨던거 같은데, 점점 어려워지지요? ㅜㅜ
그래도 포기 하지 마시고 끝까지 완강해주세요..
익숙해지기만 하면 얼마든 문제 풀 수 있습니다.
감사합니다. ^^
다시 한 번 보고 갑니다❤
수강해주셔서 감사합니다. ^^
대박,, 너무 재밌어요!!!!!
음....이게 재미있으면 곤란한데요...^^
재미없는 내용인데 재미있게 봐주셔서 감사합니다.
질문 있으시면 언제든 질문 주세요~~^^
돌대가리라 이해가 안갈줄알았는데 와...대박입니다. 정말 감사합니다. 흥달쌤^^
포인터부터는 조금씩 어려워지는데, 이해를 하셨다니 다행이에요~~
앞으로 조금씩 어려워지겠지만, 끝까지 포기 하지 말고 완강해주세요~~
감사합니다. ^^
최고의강의🎉
안녕하세요~~
도움이 되셨다니 다행입니다. ^^
수강해주셔서 감사합니다.
필기때 혼자이해하느라 정말 고생했는데 그 기억+선생님 강의로 이제 이해가 다 되었어요 ㅎㅎㅎ
안녕하세요~~~
아무래도 혼자 공부하는게 쉽지가 않아요.
워낙에 빵상용어들이다 보니..ㅜㅜ
그래도 지금 이해가 되신다니 정말 다행입니다.
오늘 하루도 공부하시느라 고생 많으세요~~
열심히 하신 만큰 좋은 결과가 있을꺼에요~~
화이팅입니다. ^^
옛날에 아무생각 없이 c언어 포인터를 먼저 배웠는데 여기에 과정을 더해 갑니다^^
안녕하세요~~~
포인터가 참 헷갈리는 문법이에요~~
그래도 익숙해지면 할만하니깐 힘들더라도 끝까지 함께해주세요.
감사합니다. ^^
이사람 고수다..
제가 만약 정보처리기사 실기를 합격한다면 흥달샘께서 이해되게 쉽게 가르쳐주신 덕택일겁니다. 감사합니다.
안녕하세요~~~
칭찬 감사합니다. ^^
꼭 합격하셔서 좋은 소식 전해주세요.
합격하시길 진심으로 응원할께요..^^
흥국쌤펀치!! 흥국쌘펀치!! 그는 신이야!
안녕하세요~~~
이리 칭찬을 해주시니 몸둘바를 모르겠습니다.
감사합니다. ^^
포인터 많이 어려워했는데 너무 쉽게 잘설명해주셔서 이젠 알것같아요~ 감사합니다
포인터 문제가 참 어렵지요..ㅜㅜ
C언어 공부하면서 가장 많이 포기하는 부분이 포인터 파트인데, 강의 듣고 이해해 주셨다니 감사합니다.
조금만 익숙해지시면 포인터 문제 쉽게 푸실 수 있을꺼에요~~^^
감사합니다
저도 감사합니다 ^^
감사합니다ㅠㅠ❤
[Q&A] 1차원 배열과 2차원 배열 질문을 드리기 전에 이 영상을 봤었어야 했네요 ㅋㅋ 감사합니다.
늦은 답변이지만 도움이 되셨다니 다행입니다. ^^
천재수험생들에게는 모르겠으나
일빈적인 정처기 수험생들에게는
단언컨대
최소한 대한민국에서 최고의 강사❤❤❤
이해됐어요! 감사합니다!
안녕하세요~~~
이해가 되셨다니 다행입니다.
모르는 부분 있으면 언제든 질문 주세요~~
감사합니다. ^^
조금 헤갈려서 반복해서 듣었는데 다음과 같이 이해하는게 맞을 까요?
a: (포인터변수의) 메모리의 주소값
*a : (포인터변수의) 메모리의 주소에 저장 된 값
&b : (일반 변수의) 메모리 주소 값
*a = &b; 하게 되면
a는 변수의 b의 메모리 주소 값
*a는 변수의 b에 저장된 실제 데이터 값
안녕하세요~~
먼저 답변이 늦어져서 죄송합니다.
위에 있는건 이해하신 내용이 맞습니다.
아래는 조금 문법적인 부분이 있는데,
int *a = &b; 이건 이해하신게 맞습니다.
선언할때 주소값을 넣게 되니깐요
헌데, 선언을 위해서 해버리고,
*a = &b; 의 의미는 a 가 가리키고 있는 공간에다가 b의 주소값을 넣어라 라는 의미가 되서 엉뚱한 결과가 나오게 됩니다. ^^
도움이 되셨으면 좋겠습니다.
감사합니다! ㅎㅎㅎ
저도 감사해요 ^^
int *a = &b와 int a = &b를 선언했을 때 둘의 차이는 무엇인지 궁금합니다. 둘 다 a=&b이지만 전자는 포인터 영역, 후자는 일반 변수 영역인 것뿐인지요?
안녕하세요~~~
int a = &b;
이건 b의 주소값을 a 변수에 넣는 건데, 이렇게 했을때는 전혀 엉뚱한 결과가 나오게 됩니다.
int *a = &b;
이때만 a와 b 가 같은 값을 가지고 있는 주소를 바라보게 됩니다~~
도움이 되셨으면 좋겠습니다~~^^
헷갈려서 다시 들으러왔네요...
화이팅!!!
코난도일님 더운날씨에도 열심히시네요.
저도 오늘부터 다시 열심히 하겠습니다. ^^
쌤 강의 듣고 저번주 정보처리 필기 합격하고 실기 대비 깨알 C언어 듣고 있어요.
왠만하면 여러번 보면 익숙해져서 이해는 되는데 요 포인터는 당최 납득이 안되네요 납득이 ㅜㅠ
안녕하세요~~~
포인터는 아무래도 조금 헷갈리지요..ㅜㅜ
c언어 포기하시는 분들 대부분이 포인터에서 포기를 합니다.
이해가 안가도 조금만 힘내주세요~~
화이팅입니다. ^^
☆포인터... 변수의 주소찾기..... 이렇게 쉬운 개념을 다른 사이트 유료인강 들으면서 계속 한숨쉬고 있었네요 ㅠㅡㅠ 아깝지만 지금이라도 흥달쌤한테 잘배워서 다행이야........
~의 값~~ ㅎㅎ
안녕하세요~~~
이번에 포인터 문제가 너무 어렵게는 출제가 되지 않았는데, 잘 맞추셨을지 궁금하네요~~^^
꼭맞춰주셨길 바랍니다.
좋은 강의 감사드립니다!
제가 이해한게 맞을까요?
int *a;
*a = 10;
-> 이 경우는 포인터변수 a가 가리키는 메모리 주소 ‘안에 들어있는 값’을 10으로 넣어준다.
-------------------
int *a = 10;
-> 이 경우는 포인터변수 a가 가리키는 ‘메모리 주소값’을 메모리주소 10으로 변경한다.
-----------------
자바만 공부한 입장에서는 상당히 비직관적이네요ㅋㅋ
안녕하세요...
첫번째 경우, 그러니깐
int *a;
*a = 10;
요 설명은 맞습니다.
근데 두번째,
int *a = 10;
설명은 맞는데, 10이라는 메모리 주소를 알수가 없기 때문에, 저런식으로 하게 되면 오류가 발생을 하게 되요..
&b; 이런식으로 주소값을 넣어줘야 정상 수행이 됩니다.
도움이 되셨으면 좋겠습니다. ^^
@@HeungSsaem 아 넵 감사합니다. 이해했습니다. 감사합니다^^
이거 어제 정치기 시험문제 고대로 나왔어요 ㅎㄷㄷ
int *C = &B; 에 대한 자세한 설명이 없어서 이해하는데 힘들었습니다
int *C
C = &B랑 같은말이에요
흥달쌤~ 시험 3회차 80점정도로 합격할 것 같습니다. 코드는 한 문제 빼고 다 맞은거 같아요 !! 사람들이 제일 많이 볼거 같아서 포인터 강의 이 곳에 댓글을 남겨요 혹시나 사람들이 저 처럼 인강을 결제 할까 말까 고민하시는 분들!!... 저는 흥달썜 강의를 시험 2주 전에 결제해서 강의를 들었고 그 전 까지는 혼자 맨땅에 헤딩 하면서 한달을 보냈어요 공부는 그래도 하루에 8시간 이상 씩 한 거 같아요.. 하지만 혼자 하다보니 개념이 잘 잡히지 않았거든요 그래서 여기저기 흩어져 있는 개념들을 모아서 문제를 풀곤 했는데 참 힘들었어요... 근데 흥달쌤 강의를 듣고 여기저기 흩어져 있는 개념들이 하나로 모이기 시작하면서 이제 눈에 보이기 시작 하더라고요 !! 특히 자바가요 씨언어는 사실 정말 순차적인 개념과 실수 줄이기만 하면 되지만 자바는 개념을 잡기가 참 힘들더라고요 . .특히 상속이나 하이딩 부분이나 그 중 생성자 부분이 말이에요 여러분 자바는 정말 흥달쌤이 잘 가리키신다고 저는 제가 느꼈고 여러분도 경험하시길 바래요.. 자바는 개념만 똑바로 잡으면 문제를 틀릴 일이 엄청 적어요.. 저는 시험 3일 전엔 자바 개념을 다 알고나니 자바 문제는 풀어보지도 않았네요 C언어 실수 잦은 부분이랑 파이썬 괄호 , 대괄호 그런거나 보고있었지.. 그리고 모르는거 있으면 댓글 다시면 흥달쌤이 친절하게 알려주십니다.. 하루 안에요 !! 여러분 꼭 강의 결제해서 들어보시길 추천드려요 흥달쌤 제가 질문 참 많이 했는데 미안해서 제가 질문이 참 많죠... 이렇게 댓글 단 적 있거든요 덕분에 한 번에 붙었습니다.. 감사합니다
안녕하세요~~
한번에 합격하기가 쉽지 않은데, 그동안 정말 수고 많으셨습니다.
제가 작은 도움이라도 될 수 있었던 점, 그저 감사하게 생각할 따름입니다.
제가 수험생 입장이 아니다 보니, 이게 정말 쉬울까 어려울까, 고민을 많이 하면서, 최대한 쉽게 강의하려고 노력은 하는데, 그게 쉽지는 않더라구요~~
올해 그런 공부를 열심히 했으니, 내년에는 좀 더 나은 강의를 만들도록 노력하겠습니다.
응원 해주셔서 너무 감사드리고,
시험보고 오시느라 수고 많으셨습니다.
합격하신것도 진심으로 축하드립니다. ^^
ㅜㅠ 정처기 시험까지 3주남았는데 c언어 하나도 모르는 상태에서 문제 풀어보고 절망하다가 방금 인강찾아서 들어왔는데 정말 이해가 잘돼요!!! 다른 강의 들어도 포인터 이해 못했었거든요ㅠㅠㅠㅠㅠ…너무 감사합니다 배열까지 들으면 문제 풀 수 있을거같아요 !! ㅎㅎㅎㅎ
안녕하세요~~
C언어가 참 어렵지요..ㅜㅜ
C언어 익숙해지셔서, 정보처리 실기 꼭 합격해주세요~~
합격을 진심으로 응원합니다.
감사합니다. ^^
*A A라는 변수를 포인터 변수로 선언
*A = 10 A라는 포인터변수 자리(공간)의 값(102번지 등)에 10 대입
= A의 값 = A번지가 가리키는 값 10
*A가 아니라 그냥 A일 경우 번지 값인 102 출력
&B 의 B 주소값
4번 수강했습니다.ㅎㅎ 10번 목표
넵...a 의 값이다...라고 알아주시면 됩니다. ^^
오늘도 열공중이시군요..
@@HeungSsaem 이렇게 정리 안 해놓으면 &B 같은 기호도 기억이 안 나서... ㅠㅠ
감사합니다~^^
int *c = &b 는 c의 포인터값이 b의 주소값이 되는거 아닌가요
그래서 출력값이 101 나와하는거 아닌가요
굉장히 헷갈리네요,,,
안녕하세요~~~
c는 101이라는 값을 가지고 있습니다.
그래서 printf(c) 라고 가정한다면 101이 출력이 되지요.
헌데, printf 할때, c주소가 가리키고 있는 주소의 값을 출력해라 라고 하는,
*c 라고 했기 때문에 b 변수의 값이 출력되게 됩니다.
도움이 되셨음 좋겠습니다. ^^
선생님
포인터 변수 선언하고 그 포인터 변수의 값으로 일반변수영역의 주소값 말고 변수 값을 넣을수도 있는지 궁금해요
음...포인터 변수에 값을 넣는건 가능합니다.
헌데 그렇게 넣으면 완전히 이상한 결과가 출력되어서,
프로그램을 할때도 그런건 염두에 두고 개발을 합니다. ^^
일반값을 넣으면 사람이 알수 없는 이상한 메모리 영역을 참조해버리는 상황이 발생을 할 수 있어서요~~
감사합니다. ^^
10:45
왜 a의 메모리값이 100번부터 시작하나요?
안녕하세요~~~
주소값은 정하기 나름입니다.
실제로 메모리에 어떻게 들어가는지는 전혀 알수가 없어서,
문제를 풀면서 나만의 기준을 정하면 됩니다.
감사합니다. ^^
저는
컴파일러 버젼이 낮아서 그런지
printf("%d
",*a);
printf("%d
",a);
==>
printf("%d
",*a);
printf("%p
",a);
이렇게 해야 되네요
안녕하세요~~~
%p 면 주소값을 헥사 값으로 표현하는건데,
아마 %d 가 안되는건 그만한 값을 표현할 수가 없어서 일꺼에요~~
ideone.com
이런 웹 컴파일러를 이용하시면 컴파일 버전 문제는 나오지 않을꺼에요~~
여러 웹 컴파일러가 있으니 그런걸 활용해주세요
감사합니다. ^^
@@HeungSsaem 감사합니다.
에러는 나지 않고 그냥 메모리 주소 값을 0 출려되네요
* ~의값
번지수는 매번 바뀔수 있는건가요...? 100으로 지정 하거나 103으로 지정하거나?
문제에서 번지수를 출력하라고 하면... 제가 임의로 지정한 100 또는 어떠한값을 출력 하면되는거지.... ㅜ
안녕하세요 완강하고 포인터의 이해도가 완벽하지 않아서 다시 보고있는데 n잡 10챕터 4강 c언어 강의 35번에서 int *C = &B; 이렇게 나오는데 이거랑 이 강의에서 나오는 int *a; a=&b; 이거랑 똑같나요? 강의를 들어보니까 똑같이 표현되고 있는거 같아서 여쭤봅니다!!
넵...똑같습니다~~
첫번째꺼는 초기값으로 바로 지정을 한거고요~
두번재꺼는 일단 포인터를 만들어놓고, 그리고 그 다음에 그 포인터변수에다가 주소값을 대입한 형태입니다.
int *c;
이렇게 표현하는게 c 변수에는 주소값이 들어갈꺼다 라고 표현한거고,
그 이후에
c = &b;
이런 표현도 가능합니다.
감사합니다. ^^
@@HeungSsaem 감사합니다!!
마지막 문제를 보다가 궁금한 점이 생겨서 질문합니다!
int A = 10, B;
int *C = &B;
B = A--;
이 부분에서 A--는 증감연산자가 후위에 있어서 B에 A의 값인 10을 할당하고 A가 9로 바뀌신다고 하셨는데 이해는 했는데요... 자바스크립트를 쓰다가 와서 그런지 헷갈리네요! A -= 1 과 같은 재할당의 형태가 아닌데 실제로 A의 값이 증감연산자를 통해서 직접 10에서 9로 재할당처럼 변화가 되는 건지 궁금해요
안녕하세요~~
단항연산자는 대입의 의미까지 같이 가지고 있습니다.
++a;
는 a = a + 1; 의 의미까지 가지고 있습니다.
감사합니다. ^^
포인터 나올 때마다 열심히 해설 봐도 이해가 안돼서 스트레스였는데 6분만에 완벽히 이해됐어요ㅠ 너무 감사합니다ㅠㅠ
안녕하세요~~
포인터가 좀 어렵긴한데, 조금만 이해하시면 쉽게 풀 수 있습니다.
앞으로 좀 더 어려운 문제가 나오겠지만,
끝까지 포기하지 말고 함께해주세요..
화이팅!!!
포인터 변수를 처음 선언할때는 주소값을 넣는건가요?
int *C = &B; 가 만약 *C를 선언 후에 *C의 값을 넣는다면 int *C; *C=B; 인거죠?
음...포인터 변수는 주소값을 가지고 있는 변수이기 때문에
*c = b 이렇게 사용하게 되면 이상한 값을 만날수도 있습니다.
보통 저렇게 쓸때는
int *c;
int b =10;
c = &b;
이런식으로 해서 주소값을 넣어줘야해요~~^^
선생님 그러면 변수 선언할때
int A = 10, B, C, D….이런식으로 선언해도 되나요??
안녕하세요~~~
그렇게 써도 되긴 하는데, 보통 그렇게는 사용하진 않습니다. ^^
감사합니다.
11:03 문제 질문이 있습니다.
int *C = &B; 문장이 있는데, 이러면
C가 아니라,
*C에 B의 주소(&B)가 대입되어서
*C를 출력하면 B의 주소(괴상한 값)이 출력되어야 하는 것 아닌지요?
먼저 int *C;를 선언한뒤
C=&B;이렇게 대입해줘야 문제의 답과 같은 결과가 출력되지 않는지 의문입니다.
안녕하세요~~~
요건 문법적인 부분인데요..
선언을 하면서, 그러니깐 int *b; 이렇게 하면서는 처음 한번 주소값을 대입할 수 있습니다.
요건 문법이니 그렇게 알아주시면 될듯합니다. ^^
감사합니다.
@@HeungSsaem 친절한 답변 감사합니다. 문법적인 내용이었군요!
그리고 ㅠㅠ 아까 1강에서 곧 내려갈수도있다고 답변해주셨던데 혹시 언제 내려가나요 ㅠㅠ
이번달까진 다 들을 것 같은데...
C언어 쭉 듣고있는데 강의력이 좋으셔서 유료로 정처기 실기 강의도 한번 들어보고자 합니다!
좋은 강의 감사합니다
@@김달팽-r4n 안녕하세요~~~
일단 재생목록에서만 삭제하고, 3회 실기까지는 버텨보려고요..^^
그래도 혹시 모르니 후딱 수강해주세요~
감사합니다. ^^
안녕하세요 강의 내용은 다 이해가 되는데 6분 정도에 나오는 문제를 직접 비주얼 스튜디오에 그대로 배껴서 쳐보니 오류라고 뜨네요ㅜㅜ
왜그런건가요? 감사합니다.
int *a;
*a=10;
printf("%d", a);
printf("%d", *a);
안녕하세요~~
컴파일러의 특성때문에 주소값을 지정받지 못해서 오류가 발생할 수 있습니다.
이 코드는 정확하게 수행을 하려고 하는 목적이 아니라,
포인터에 대한 이해를 하려고 하는 목적이기 때문에,
비쥬얼 스튜디오에서는 오류가 발생할 수 있고, C 컴파일러에서도 원하지 않는 이상한 값이 출력될 수 있습니다.
감사합니다. ^^
요번 강의는 자막이 일본어네용 ?
에잉...그래요?? 자막을 뭘 따로 설정해준기 없는디..ㅜㅜ
하필 일본어라니...영어가 좀 나와주지..ㅜㅜ
따로 설정된게 있나 한번 볼께요~~^^
선생님 엔잡에서 실기 강의 감사히 잘 듣고 있는 수강생입니다 감사합니다. 제가 드리고 싶은 질문은 int *C라고 했을때 이 C라는 포인터 공간에는 오직 '주소값'만 들어갈 수 있는건지 궁금합니다. 이 문제에서 int B는 결국 30이라는 값과 101번지라는 주소값 이렇게 각각 2가지를 가지는 데 int *C는 라는 공간에는 주소값만 가질 수 있는 거고, 30이란 값은 int *C의 값이 될 수 있는 건지 궁금합니다. 30은 int B의 값이고 *C는 그저 그걸 방향만 가리키고 있는건가요?
안녕하세요~~~
포인터 변수도 마찬가지로 어딘가에 선언이 되어 있습니다.
그러니깐 int *c; 를 했을때,
c 는 200번지의 주소값을 가지고 있는거고, 그 200번지에는 일반적인 값이 아닌 주소값을 가지게 됩니다.
ruclips.net/video/PRp3Ah7yBNY/видео.html
이 영상을 한번 참고해주시면 좋을 듯 합니다.
감사합니다. ^^
번거롭게 질문드려서 죄송합니다 10:48 문제에서 만약에 int *c까지만 선언을하고 진행을한다면 int *c안에는 c 자신의 주소를 나타내건가요? 아니면 그냥 주소를 담을수있는 변수(그릇)이다 라고 이해하면될까요 ?결과적으로 출력값은 알수없는 c의 주소값이뜨는거고
안녕하세요~~
만약 int *c;
이렇게만 하게 되면, c라는 주소값을 넣을 수 있는 변수가 생기게 됩니다.
c 는 메모리상 어딘가에 있는 형태입니다.
그냥 주소를 담을 수 있는 변수라고 보시면 됩니다.
감사합니다. ^^
질문이 있습니다!
a앞에 *가 붙으면 a주소가 가리키는 값이라고해서
10:00문제는 이해했는데요,
그래서 13:00문제에 c주소가 가리키는 값에 b의 주소가 들어간다고 생각했습니다
근데 왜 c에 b의주소가 들어가는 건지 이해가 안됩니다ㅠ
바로 앞 문제에서는 a=&b 이고 여기서는 *C=&B 인데 왜 같은 방식으로 풀이되나요??
안녕하세요~~~
이게 선언의 문제인데요..
포인터 변수를 최초로 선언할때만, * 를 이용해서 주소를 할당할 수 있습니다.
int *a = &b;
처음에만 b의 주소를 a 에 할당하게 되고요..
그 이후에 사용되는 *a 는 a 주소값의 값이 됩니다.
선언이후에 주소를 넣으려면,
int *a;
a = &b;
이렇게 사용해야 합니다.
*a = &b;
이렇게 하게 되면, a의 값에다가 b의 주소값을 넣는 형태이기 때문에 이상한 결과가 나오게 됩니다.
감사합니다. ^^
@@HeungSsaem 답변 감사드립니다☺️ 좋은하루되세요!
안녕하세요 10:37 부분만 이해가안가서 질문드립니다 b 는 애초에 변수영역에 10이란값이 들어가있고 a는 변수영역에 선언이 없는데 이해가 살짝안갑니다 a랑 *a랑 별도의 공간이 아닌건가요
*a라고 선언해도 a라는공간이 생긴다는걸까요?.....
저기서 만약에 a=9; 라고 선언을하면 &b의 주소값을받으니
printf("%d
",a) = 103
printf("%d
",*a) = 10
printf("%d
",b) = 10
printf("%d
",*b) = 10 인건가요?
안녕하세요~~~
b는 일반 변수이기 때문에 메모리 어딘가에 b라는 영역이 만들어지게 되고, 그 공간에 10이라는 값이 할당이 됩니다.
이때 b 라는 변수가 메모리의 103번지에 있다고 가정을 하고 있습니다.
그리고 a 는 포인터 변수가 됩니다.
포인터 변수는 메모리의 주소값을 가지게 됩니다.
a = &b 를 했기 때문에, b 가 위치하고 있는 곳의 주소값 103번지를 a 에 대입하게 됩니다.
a 와 *a 는 공간의 차이가 아니라, a 는 메모리 어딘가에 그냥 변수처럼 공간이 만들어지게 되는거고, *a 는 그 a 변수 공간에 있는 주소값의 값을 나타내게 됩니다.
printf("%d
",a) = 103
printf("%d
",*a) = 10
printf("%d
",b) = 10
그리고 이 부분까지는 맞지만,
*b 는 전혀 엉뚱한 결과가 나오게 됩니다.
b는 포인터변수가 아닌 일반 변수입니다.
포인터 변수만, 해당 변수내에 주소값이 들어가게 되고, 가리키고 있는 주소의 값을 출력하기 위해서 *a 형태를 사용하게 됩니다.
감사합니다. ^^
@@HeungSsaem 감사합니다 계속 영상반복해서보니까 점점 이해가가가는거같아요
*b의 출력값은 그러면 알지못하는 주소값이 나온다는걸까요? (어딘가의 공간에 들어가있으니까) 포인터변수가아니기떄문에 주소값을 받는변수가 아니니까요 7:15
3번째 듣고있습니다. 6분32초쯤에 printd(%d,a) 는 102라는 거는 자기가 임의로 지정한 값이니깐 101이 될수도 있고 103 104 105 이런식으로 나올 수 있는건가요?? 그리고 선생님 유료강의도 듣고있는데 프로그래밍은 바로 문제로 들어가시던데 이걸 먼저 듣는게 맞죠??
안녕하세요~~~
번지수는 임의로 지정을 하는거기 때문에 뭘로 해도 상관은 없습니다.
그리고 기사강의에 보면 NEW 라고 해서 지금 업로드 되고 있는 강의가 있습니다.
그걸 바로 봐주시면 됩니다.
깨알 C언어나 다른 문제들에서 질문 주신 내용들을 바탕으로 좀 더 쉽게 설명을 하고 있거든요~~~
그걸 바로 봐주세요~~
감사합니다. ^^
@@HeungSsaem 감사합니다 낼부터 new프로그램 특강 정주행 하겠습니다.
포인터는 주소값을 참조 *가 붙었을때가 값임 그림그려서 확인해볼것.
깨알 C언어 | 23. 포인터
# 포인터란? 1:23
메모리의 주소값,
# 포인트 변수 선언 2:02 정답
int *a(포인터 변수 선언) 이후 부터는 *a? a의 값은, a가 가지고 있는 주소값에다가
포인트 변수 선언과 동시에 어떤 주소값과 매칭이 됌// 배열과 비슷, 값 자체가 아니라 레퍼런스를 참조,
a? 레퍼런스 출력
a*? 레퍼런스의 값을 출력
# 변수의 주소 찾기 7:04 정답
모든 변수는 주소값을 가지고 있다,
#a=&b? b의 주소값,
문. 10:45 정답
&B? B의 주소값,
답. 15:30
2차원 배열 +포인터들어가있는것도 강의한 번 부탁드려봅니다. 단일문제는 이해하겠는데 둘이 같이나오니 머리가멈춤 ㅎㅎ
으흠...설명 필요하다고 하시는건 언제든 해드릴수 있는데...문제는 제가 어떤 유형인지 이해를 못하고 있어요..ㅎㅎ
샘플 문제라던지 그런게 있으면 한번 올려봐주세요..
그럼 제가 내일 촬영하러가서 QA로 올려두도록 할께요~~
감사합니다. ^^
@@HeungSsaem 지금 바로 업로드 하겠습니다! 이번에 기출문제에 나왔던건데, 사실 찍어서 맞춘건데 정확하게 이해좀 할려고합니다.
#include
#include
int main(int argc, char * argv[]){
int arr[2][3]={1,2,3,4,5,6};
int (*p)[3]=NULL;
p = arr;
printf("%d,",*(p[0]+1) + *(p[1]+2));
printf("%d", *(*(p+1)+0) + *(*(p+1)+1));
return 0;
}
이문제입니다. 강사님 c언어 특강 듣고 바로 응용해봤는데, 제가 해석했을땐 이렇게 나왔거든요?
1. int arr[2][3] = {1,23,4,5,6} 2차원 배열
열과 행으로 구성
a[0][0] a[0][1] a[0][2] = 1,2,3
a[1][0] a[1][1] a[1][2] = 4,5,6
2. int (*p)[3] = null
p [ ] [ ] [ ] 라는 공백이 들어가있음
printf("%d,",*(p[0]+1) + *(p[1]+2)); 해석하자면 p[0]+[1]+ = 2가 들어가있고 p[1][2] 6이니깐 더하면 8
printf("%d", *(*(p+1)+0) + *(*(p+1)+1));:해석하자면 p+1 +0 = 4가 들어가있고 p +1+1 5들어가있으니깐 합치면 9
결론 8/9 나오는데 제가 해석한게 맞을까요?
이 부분 설명이 좀 필요합니다 ^^;
@@sszxjj23 저건 2차포인터는 아니고..아주 골치 아픈 문제입니다..
제가 내일 가서 촬영하고 내일 밤에 올려드릴께요~~
내일은 아마 좀 늦게까지 촬영을 할꺼라서요..
글로는 설명이 안되서...^^
QA에 올려두면 확인해주세요~~
감사합니다.
어제 질문주신거 답변입니다.
ruclips.net/video/IqwoVBNhCUM/видео.html
도움이 되셨으면 좋겠습니다. ^^
@@HeungSsaem 참고했습니다. 역시 설명들으니 금방 이해됩니다. 아하 저렇게 푸는군아 배웠습니다
와 미치겠다....... 이해가 안가네......ㅜㅜ 왜케 햇갈리냐
안녕하세요! c언어 배운지 이제 2달이 다 되어가네요 다른 학원에서 강의 듣는데 템포가 너무 빨라서 모르는 부분을 집고 가기 어려워서 유튜브로 찾다보니 알게 되었습니다!! 아직 끝까지 수강듣지 못했지만 너무너무 이해하기도 쉬워서 좋아요 :) 이제 학원에서 한창 다차원 포인터를 배우는 중인데 malloc?? 동적 할당메모리 이였나? 배우는 중인데, 머리로는 이해는 되는데 코딩으로 구현하기가 너무 어렵더라구요. 혹시 이 부분에 대해서도 이론적으로나마 강의를 올려주실 수 있을까요? 아니면 다른 유료강의가 있으신가요? 선생님 덕분에 c언어가 한 걸음 더 가벼워졌어요, 60강의까지 힘차게 달리겠습니다! 감사합니다~
안녕하세요~~~
2개월동안 공부하셨다면 국비지원 과정을 듣고 계신건가요??
malloc 함수가 워낙에 여러군데 사용이 되어서, 예제를 좀 주신다면 그거에 대해서는 따로 답변을 해드릴께요..^^
C언어 어렵지만, 익숙해지면 어떤 문제도 쉽게 푸실 수 있을꺼에요..
그리고 제가 C언어 개념은 따로 강의하지 않고 시험용으로만 강의를 촬영해서, 개발과정을 들으신다면 제가 진행하는 유료강의가 크게 도움이 되시진 않을꺼에요.
공부하시다가 모르는 부분은 예제를 보내주세요..^^
감사합니다. ^^
@@HeungSsaem 정산기 취득 목적으로 원래 국비과정으로 들으려고 했었는데 이전에 받은적이 있어서 전액지원이 불가능 한 상태여서 무작정 정처기공부하는 것 보다는 c언어나 자바, sql듣고 정처기 수업 듣는게 정처기 시험 준비하는데 좋을거다라고 하시면서 따로 학원강의 끊어서 듣고 있습니다! c언어 프로그래밍은 그 과정에서 하다보니 재밌어서 유튜브로 따로 강의 찾아보다가 홍달쌤영상이 가장 저에게 코드가 맞아서 편하게 듣고있어요~ :)
이 예시는
/*동적 메모리를 할당을 사용하여 입력 및 출력하기*/
라고 해서 주신 예제이신데 실행시켜도 오류가 나고 동적 메모리에 대한 기초적인 코딩 구조, 동작이해도등이 이해가 안가서 이걸 봐도 어떻게 동작하는지 조차 몰라서 질문을 여쭤봤습니다!
#include
#include
void main()
{
char* pname = (char*)malloc(32);
if (pname == null)
{
printf("err!!
");
}
printf("name?");
scanf_s("%s", pname, 32);
printf("my name is %s", pname);
free(pname);
}