개발자로의 기로에 서게 했던 ... C언어 포인터 문제 (from 정보처리기사 정처기 문제)

  Рет қаралды 104,776

기술노트with 알렉

기술노트with 알렉

Күн бұрын

Пікірлер: 65
@ustinj9590
@ustinj9590 Жыл бұрын
우리 교수님과의 80분보다 효율적인 10분이 되었습니다 감사합니다
@쁴쁴뿌
@쁴쁴뿌 Жыл бұрын
교무룩..
@Choi_silver
@Choi_silver 7 ай бұрын
근데 교수님이 수업해주시면 질문도 할 수 있고 좋지 않나요?
@아시나기
@아시나기 6 ай бұрын
@@Choi_silver교수님이신가 ㅋㅋㅋㅋㅋ
@Darin-sn9yv
@Darin-sn9yv 4 ай бұрын
교수님은 화법이 딱딱해서 비유나 연상이 잘 안됨..
@jaekunyoo8509
@jaekunyoo8509 Жыл бұрын
2/3 C언어 10일차 왕초보 기초개념 전자계산기(전산기, computer) 구조를 알면 용어와 작동을 잘 이해할 수 있겠지만, 구조를 싫어하거나 이해가 어려운 사람들도 개념 설명과 각 순서와 각 표현의 통일을 하면 매우 쉬울 수 있다고 추측 변수 - 값을 변경할 수 있는 것, 이름이 변수라고 값은 수에 한정되지 않고 문자 등도 포함, 수학의 변수를 그대로 사용하는 것으로 추측 상수 - 값을 변경할 수 없는 것, 숫자나 문자나 무관, 변수를 상수화 가능 자료형 - 기억공간(memory) 절약을 위해 크기별로 자료 구분 문자형: 1 바잍, 정수형: 4바잍, 기타 정수형 실수형: 4 바잍, 이중 실수형: 8 바잍, 기타 실수형 주소 변수형: 운영체제 크기(처리 bit)에 따라 주소의 크기(길이) 다르므로 4 바잍, 8 바잍 결정 주소 - 공간의 첫주소(첫주소값)를 말하며 문자형 자료는 1 바잍이니 그 자체, 정수형 자료를 갖는 변수의 주소는 4 바잍의 첫주소가 전체 4 바잍의 공간을 의미, 이중 실수형 자료를 갖는 변수의 주소는 8 바잍의 첫주소가 전체 8 바잍의 공간을 의미, 표시 선언문 - 기계어로 번역하는 번역자(compiler)에게 미리 준비하게 정보 제공 1. 변수 선언시 기억공간 할당(확보, 지정)을 위해 자료형 제공 2. 함수 선언시 자료 갯수, 각 자료형, 반환 여부, 반환치의 자료형 제공 실행문 - 선언문에 명시한 자료형을 표시하지 않고 변수명 만 사용하며 순서대로 실행 반환(return) - 함수를 시작하면 운영체제가 제어권을 넘겨주어 실행하고 종료시 제어권을 반환( 반납) 그래서 return문 이후는 소용 없다고 함({['return을 만나면 종료'만 설명하고 제어권 미언급]}), 함수 종료후 해당 내용이 삭제되므로 결과치 필요시 반환가능 변수 선언(지정) - 기억공간 중 자료형 만큼 할당(확보, 지정) 변수명 - (할당된)공간, 공간명, 공간 시작위치, 공간 시작주소, 공간 시작주소값 공간 - 내용물(자료, 자료값)을 넣기 위한 상자, 용기, 방, 창고, 건물 참조 - 공간에 접근하여 내용물을 읽어오거나(복사) 변경(재할당?), 자료값에 의한 참조와 주소, 주소값, 공간에 의한 자료값을 간접참조(역참조) 중 주로 자료값 참조 사용 기억공간 구분 - 1. 문자영역(code area, text area) 실행절차문(code) 저장 2. 자료영역(data area) - 어디에서나 사용가능한 전역변수(global variables)와 해당 지역함수에서만 사용가능하지만 그 함수가 끝나도 보관하게 static 예약어(keyword)로 지정한 정적 변수(static variables)를 저장 3. 동적?영역(heap area) - 필요에 따라 기억공간을 생성, 소멸 등 제어가능 영역 4. 적재영역(stack area) - 함수들이 실행될 때 사용하는 해당 기억공간인 stack frame(적재구도, 적재틀)들을 저장 함수 - 작동, 실행 단위 매개변수 - 함수를 정의(설계)할 때 실행(동작)시 참여하는 요소들을 위해 설계시에만 대역으로 연기(자신은 결과치로 변하지 않으므로 '매개'란 용어라고 추측) 인자 - 함수 실행시 실제 참여하는 요소들, 입력시 매개변수와 명칭 달라도 되나 순서와 갯수는 일치 필요 반환문(return) - 종료를 알리기 위해 필요, 종료후 해당 내용은 모두 삭제 반환치(return value) - 실행 결과치를 전달해야 할 경우 하나만 반환, 2개 이상 반환 필요시 주소 변수 이용하여 간접참조로 가능 함수 실행 시작 - 함수 만의 기억공간(적재틀, stack frame)이 적재영역(stack area)에 할당되어 변수 등 인자 입력과 명령 수행 시작 함수 내에서 다른 함수를 불러오면(호출하면, call) 자신의 작동을 멈추고 그 함수를 실행하는데 이 때 소환된 함수를 위한 기억공간(적재틀, stack frame)이 자신의 기억공간 위에 할당됨(위에 쌓여서(적재되어) stack(stack된다)이라 표현) 함수 실행시 생성(할당)하는 작동을 push(밀어넣기), 종료시 소멸(제거)하는 작동을 pop(따내기)이라 부름 이런 방식으로 2차, 3차 등 여러 소환된 함수들이 자신들이 실행중에 다른 함수를 호출하면 main함수의 적재틀(stack frame)위에 소환함수1의 적재틀이 쌓이고, 그 위에 소환함수2의 적재틀이 쌓이는 식으로 계속 쌓이며 적재영역(stack area)의 용량을 차지하여 그 용량을 넘는 범람(overflow)이 생겨 전체 실행이 종료되는 등의 문제 발생 (초보라서 어떻게, 얼마나 용량지정할 수 있는지는 모름) 재귀함수 - 결과치를 찾기(계산하기) 위해 자신 내에서 자신을 불러(호출하여, 재귀의미인지 궁금) 위에 쌓고(적재하고, stack하여) 다른 인자(입력값)로 같은 기능으로 조건 만족할 때까지 계속 호출해서 실행하므로 호출(재귀) 횟수 많으면 적재기억공간을 넘칠 수도 있음 함수 종료 - 제어권 반환(return)하면 pop이란 작동으로 해당 함수 적재틀(stack frame)을 소멸(제거)하니 결과치가 필요시 같이 반환, 호출된 함수일 때 그 함수가 종료하여 제어권을 호출한 함수에게 반환(return)하면 위에 쌓인 그 소환(호출)된 함수의 적재틀을 제거 재귀함수 - 결과치를 찾기 위해 반복 생성시 적재틀(stack frame)이 계속 생기다가 결과치를 찾으면(계산하면) 종료하고 반환되어 이전 함수로 돌아가서(재귀) 그 반환된 결과치로 계산하여 해당 함수 결과치 반환하며 종료하는 식으로 적재틀(재귀함수)이 순차로 없어져서(쌓였다가 없어져) 호출(소환)한 함수가 이후 명령문들을 수행할 수 있음 적재영역(stack area)에서의 함수 생성시 함수별 적재틀(stack frame)이 점점 쌓여가므로 첫 틀(첫 함수, main함수)은 마지막 틀(소환된 함수)부터 제거돼야 마지막에 종료, 제거될 수 있음, 후입선출(LFIO : Last-In First -Out) : 최근에 들어온 단위가 먼저 나감 왕기초자들이 이렇게 개념 설정 위해서 설명없이 읽고 해당 사항 공부시 반복하면 배열, 포인터 설명이 가능 추측(정확도 등 별도) 정보통신 용어집을 검색했으나 못 찾아 임의 명명 2023년 8월 18일 금 21시44분 태평양 시간 2/3
@김태훈-n9y2c
@김태훈-n9y2c Жыл бұрын
짧은 시간에 잘알려주시네요. 감사합니다.
@s_hama
@s_hama 6 ай бұрын
정보처리기사문제보니까 오라클 프로시저랑 매우 유사하네요 이해하기쉬운 강의 감사합니다.
@화성달
@화성달 2 жыл бұрын
다음달 정처기 실기 공부에 참고하겠습니다 감사요~
@with2511
@with2511 2 жыл бұрын
응원합니다
@김태용-u5x
@김태용-u5x 3 жыл бұрын
c랑 c++에서 포인터 모르겠어서 어영부영 했는데 어느정도 윤곽은 잡힌거 같네요. 오늘도 좋은 영상보고 갑니다
@with2511
@with2511 3 жыл бұрын
도움이 되셨다니 좋네요!
@반이어벙
@반이어벙 2 жыл бұрын
개념 잡기에 정말 좋은 영상이네요 감사합니다
@surpport3488
@surpport3488 2 жыл бұрын
int n => 값(n) int *n => 주소(n)의 값(*) &n => 값(n)의 주소(&) 이렇게 외우니깐 좀더 편한것 같기도요 ㅋㅋㅋㅋ 좋은 영상 감사합니다.
@with2511
@with2511 2 жыл бұрын
정리 깔끔하네요. 아래와 같이 살짝 추가해봤습니다. int *n => 주소 변수(n)의 값(*)
@uukkoo-v9o
@uukkoo-v9o 5 ай бұрын
와 진짜 잘 가르치신다 감사합니다
@with2511
@with2511 5 ай бұрын
기분 좋은 댓글 감사합니다~
@ddfood9472
@ddfood9472 Жыл бұрын
오늘 수업 듣고 와서 무슨 말인지 이해가 안갔는데..... 이 영상보고 개념 잡고 갑니다!! 짱!!!!
@jaekunyoo8509
@jaekunyoo8509 Жыл бұрын
안녕하세요. 감사히 잘 봤어요. 엉뚱하게 포인터 덕분에 C언어에 입문한 파이선 초보자에요 . 2주 전부터 포인터가 어렵다는 영상들이 연결되어 궁금해서 여러 영상 봤더니 처음부터 재미있어서, 기초설명 영상 보니 많은 부분이 파이선과 겹치고, PLC 제어영상 보고 지난 7일부터 C언어를 배우게 됐어요. 8일 전에 대학 1학기 과정에 연결되어 2일 동안 정말 재미있게 문법 공부해서 수박겉핧기 마치고, 지체하면 그나마 적은 지식이라도 잊으니 파이선도 천천히 열심히 공부하고 있어요. 요즘 일주일간 일 없으면 하루종일 C언어가 아주, 매우, 무척 재미있어서 자는 시간, 운전 시간이 아까울 정도로 열심히 공부해서 나름 개념 파악 다하고 문법은 거의 익혔어요. 작년에 빝코인 자동거래 하려고 대충 파이선 배워 시도하다가 일하느라 방치했더니 다 잊어서 2달 전부터 열심히 해서 재귀함수 알듯말듯하고 거의 다 복습하고 반복중이었는데, C언어에 눌려서 어쩌다 파이선 참조하려 VS Code 켜면 아무 생각이 안나서 정리한 파일 찾아서 새로운 것 보는 듯해요. C언어 코드가 더 친숙해졌어요. 자료형 선언하는 등 복잡하다고 들었는데 더 재미있어요. 문법을 다 기억하지 못하지만 정확하게 개념을 이해했는지 모르지만 개념은 전혀 어려운적이 없어요. 전공자들이 어려워한다는 것이 이해가 안돼요. 우선 안보고 쉬운 예제들을 풀 정도는 돼야겠지요. 재귀함수도 확실히 이해했어요. C언어 덕분이에요. 구조체도 파이선 클래스 개념 나름대로 이해해서 객체 개념도 중요하지만 단어 의미대로 목적도 중요하다고 이해하고 있어요. 목적을 갖고 객체를 만드는 거지요. 물건 만들 때 목적이 있으니 당연하게 포함된 개념이지만 중점을 둔다는 말이지요. 파이선은 self로 C++은 this라고 들었는데 이것도 처음에는 왜 자신이라고 했나 self는 기본이고 다른 인자를 받아 두개 인자에서 self와 인자가 합쳐져서 하나로 되는 이유를 모르고 따라하면 맞으니 그러려니 하고 썼는데, 어느 날 self가 만들어지는 객체라는 것을 깨달았어요. 빵틀이던 설계도에서 누구 빵인지 어떤 빵인지 정할 수가 없으니 이름 쓸 공간을 마련한 거에요. 만들 때 그 이름으로 물건(객체) 이름이 되고, 객체와 관련된 인자는 자신과 연결되어 self.xxx 되지만 무관하면 별도 변수가 되지요. 문제는 처리절차 = 알고리즘이 어렵겠지요. 이제라도 재미붙어서 열심히 하고 있어요. 이렇게 재미있는 줄 알았다면 30년전에 장난삼아 리눅스 깔았다지웠다 놀 때 했다면 하는 생각이 드네요. 그때는 막연히 어렵다고 생각해서 시도도 못했어요. 복잡하고 세밀한 조정을 좋아해서 도움이 되는 점도 있는 것 같아요. 수리할 때도 가정용 냉방기는 간단해서 재미없고 제어장치 많이 붙은 큰 상업용 냉방, 냉동기가 재미있어요. 요즘 파이선은 뒷전이고 C언어에 푹 빠졌어요. 이런 날도 오네요. 아래 글은 제가 10일 동안 처음 C언어를 배우면서 느끼고 이해한 기초 개념들이에요. 저는 파이선도 초보이고 아직 알고리듬은 시작도 못하고 몇 예제에서 어려운 것은 느꼈어도, 포인터 첫 영상부터 어려운 것 없었고 포인터 연산도 당연히 자료형 맞추어 다음 자리 찾는 것이 쉬웠었는데, 전공자들도 당시 이해 못해서 개발을 포기했다는 여러 댓글들 보면서 포인터 뿐만 아니라 일반적인 공부방법에서 기초적인 부분들의 이해가 안 돼서인가 의아하여 시간을 내서 썼어요. 몇 블로그를 참조했으나 왕초보의 이해수준이고 이 수준의 상태를 알려드리고 더 이해 못 하는 분들에게 도움이 될까하여 글 올리니 수정 보완을 해 주시면 감사하겠고 무시하셔도 됩니다. 육하원칙 - 1. 언제: 순서 2. 어디서: 식별자 등 표시 위치 3, 4. 누가 무엇을: 문장이나 함수 등에서 주체와 객체, 혹 손님, 행인 등 5. 어떻게: 같은 표식도 표시자(Punctuator)나 연산자(operator) 역할 등 6. 왜: 지정, 정의된 이유나 역할, 목적 등을 다시 설명하거나 실행절차 등을 설명 ({[초보 특히 왕초보시에는 어떤 것을 몇분도 아닌 지금 막 듣고도 생각이 안나거나, 다른 것과 혼동되거나, 자신만의 엉뚱한 추측, 상상, 연결, 대입하거나, 갑과 을을 바꿔서 알아 듣거나, 순서를 바꾸거나, 비슷하거나 많이 달라도 같다고 하는 등으로 딴 소리하고, 심지어 맞는 말을 하면서 틀리다고 하거나 모른다고 하거나, 본인이 뭘 모르는지 혼동하는지 모르니 확인해 가시면서 답답해도 계속 반복해 주셔야 해요. 오죽하면 낫 놓고 기역 자 모른다, 쥐어줘도 모른다 고 하겠어요. 알기까지, 알게 되기까지의 과정과 시간이 필요한가 봐요.]}) 학습자들은 누구나 스스로 곡해, 변경, 추측해서 오해하거나 모르겠다고 하는 경우들이 있는데 이를 줄이는게 중요하고, 작은 차이를 알아내고 그에 맞게 적용해야 하지요. 해당 내용을 건성으로 시청하거나 읽고서 모르는 부분을 재시청하여 확인도 안 하고 질문을 올리는 무성의와 남의 생명인 시간을 허비하게하는 악행도 없애야 합니다. 그후에 확인이나 하는지 답답해요. 2023년 8월 18일 금 21시44분 태평양 시간 1/3
@lililiii4777
@lililiii4777 Жыл бұрын
2시간 수업받아서 얻어간거 없었는데 10분만에 이해하고 구조체라는 개념까지 배워가네 이 무슨 ㅁㅊ효율이지
@with2511
@with2511 Жыл бұрын
과찬이네요~♡ 감사해요!!
@user-sun3856
@user-sun3856 2 жыл бұрын
c언어만 배운 사람 입장에서 봤을 때 c언어를 배우는 사람들이 포인터를 어렵다고 생각하는 이유는 다른 언어를 먼저 배우고 나서 그 언어에서만 적용되고 c언어에서는 적용되지 않는 개념을 c언어에 그대로 적용시키려고 해서 (즉, 다른 언어와는 다른 c언어만의 특징을 이해하지 못해서) 그런거같다
@_C_A_C_T_U_S
@_C_A_C_T_U_S 2 жыл бұрын
C언어부터 배우는 학생인데, 확실히 C언어부터 배우면 더 쉽게 이해가는것 같아요. 오히려 객체지향인 class가 더 어려운 느낌...ㅠ
@with2511
@with2511 2 жыл бұрын
객체 지향 개념 자체가 벽이라서요..
@localhost2110
@localhost2110 2 жыл бұрын
예전에 java에는 포인터 기능이 없다! 라는 말을 듣고 그러려니 넘겼는데, 자세한 설명에 그 말의 진의를 깨달아 웃고 갑니다 ㅎㅎㅎ
@with2511
@with2511 2 жыл бұрын
진의를 깨닫으셨다니 좋네요~
@김성우-m6d5x
@김성우-m6d5x 7 ай бұрын
감사합니다.
@roughboy
@roughboy 2 жыл бұрын
int kor , math가 어떻게 배열에서의 두번째 세번째 가 된건가요? 구조체를 잘 모릅니다. 구조체를 이해해야 알수 있는 부분인가요?
@sleep-healingBGM
@sleep-healingBGM 5 ай бұрын
c언어 한달정도 공부해서 포인터 까지 왔는데 저도 그게 왜 그런식으로 되는지 도무지 모르겠네요 ㅠㅠㅠ 알렉님 꼭 답글 달아주세요 ㅠㅠㅠㅠㅠㅠㅠ
@sorkdhktsp1
@sorkdhktsp1 2 ай бұрын
@regnunparfertica5920
@regnunparfertica5920 Ай бұрын
구조체를 객체화(struct student s[3]부분)하여 메모리에 올리면 구조체에 소속된 변수들은 메모리의 어딘가에 같이 모여있게 되는데, 이때 구조체 구현부에 선언된 순서대로 저장됩니다. 이 예제에서는 name이라는 char 변수 뒤에 kor, math, sum, total이 순서대로 메모리 번지수를 할당받는 것입니다. 그런 의미에서 name이 첫 번째 변수이니 kor, math 두 번째, 세 번째 라는 표현을 사용하신것 같습니다.
@ggssas
@ggssas 3 жыл бұрын
c언어는 단순히 문법을 다 배웠더라도 어떻게 잘쓰는가가 정말 어려운것 같습니다.. 포인터가 결국엔 c언어의 모든것처럼 보인다는..
@with2511
@with2511 3 жыл бұрын
C언어 어려운 언어죠... 예전엔 기본이다 라고 해서 다 공부하긴 했었는데, ... 포인트가 복잡해지면 많이 어려워진다는... 그리고 링크드 리스트를 한땀한땀 구현했다는 ㅋㅋ 개발의 묘미가 있긴 했는데, 일일이 만드는게 넘 어려웠죠.
@Hyuchan1002
@Hyuchan1002 11 ай бұрын
원래 그 전세대 프로그래밍 언어였던 포트란이나 코볼에서는 동적인 프로그래밍이 불가능했음 ㅋ 동적 프로그래밍을 위해서는 포인터의 탄생은 필연적이었죠 그 다음세대 C++ 과 자바를 거치면서 이를 추상화 하는게 가능해진 것 뿐 ㅋ
@jaeyalee5237
@jaeyalee5237 2 жыл бұрын
포인터는 "데이터가 메모리에 어떻게 저장되는가"만 알면 이해하기가 쉽죠. 컴퓨터 구조나 에셈블리를 공부했으면 금방 알겠지만, 그렇다고 그걸 먼저 배우기에는 뭔가 가성비(?)가 안맞는것 같은...
@감자마루-x3q
@감자마루-x3q 2 жыл бұрын
난 왜 27살때 이해 못하던 걸 36살때 이해를 하냐고 ㅠㅠ 27살때 이해가 됐으면 계속 개발자로 갔을텐데 ㅠㅠ
@킴우스
@킴우스 Жыл бұрын
난 왜 29살때 이해 못하던걸 예순에 이해 하냐고 ㅠㅠ 왜 날 plc 를 하게 만드냐고 ㅠㅠ
@djw8678
@djw8678 Жыл бұрын
늦지않았음
@kraheschnabel7650
@kraheschnabel7650 3 жыл бұрын
좋은 영상 감사합니다
@test-gw5oz
@test-gw5oz 2 жыл бұрын
재미있어요 ㅎ
@gaengedev2583
@gaengedev2583 Жыл бұрын
선생님 안녕하세요. 만약에 예제에서 p= &s[0]; 또는 p=&s 로 대입 하지 않았다면 p는 비어 있는걸까요?
@with2511
@with2511 Жыл бұрын
p는 주소네요. p자체는 주소 값이 있고, *p 이렇게 해서 p의 내용을 보면 값을 별도 입력 안했다면 없겠네요.
@gaengedev2583
@gaengedev2583 Жыл бұрын
@@with2511 답변 감사합니다! c언어 포인터를 몰라서 골머리였는데 덕분에 이해가 잘되네요
@jaekunyoo8509
@jaekunyoo8509 Жыл бұрын
3/3 C언어 10일차 왕초보 기초개념 어느 영상에 단 댓글 초보자가 본 포인터 난해설은 선언문에서 별을 붙여 지시자, 지적자로 지정하고는 실행문에서는 별을 떼고 일반 변수처럼 문자만 있으니 헛갈리는 첫걸음, 지름길이에요. 일반 변수들을 선언문에서 자료형 지정하고 실행문에서 변수명 만 쓰듯이 같은데, 처음 들은 변수형에 얼떨떨한데, 상급자들은 당연하니 이 부분을 설명 안해요. 그리고는 갑자기 별을 다시 붙이고 자신(지시자, 지적자, 주소 변수?)의 값인 지적한 곳(것, (지적한) 변수)의 주소, 주소값을 찾아오는게 아니라 어떻게 건너는지 한다리 건너 지적한 곳의 값을 찾아온다니 헛갈릴 수 있지요. 그런데 위 부분은 정말 처음 듣는 이들이 혼동되어야지 두세번은 짧은지 모르겠는데 관심갖고 자세히 보면 전혀 어렵지 않지요. 달 가르키는 손가락만 보며 달 찾으니 보이나요? 포인터 - 주소값을 저장하는 변수 포인터 선언 - 선언문에서 주소를 저장하는 변수와 같은 자료형 명시하고 별을 변수명 앞에 붙여 표시 사용 - 실행문 내에서는 별표 없이 변수명 만 사용(일반 변수들을 선언문에서 자료형 지정하고 실행문에서 변수명 만 사용과 동일) 주소 - 공간의 첫주소(첫주소값)를 말하며 문자형 자료는 1 바잍이니 그 자체, 정수형 자료를 갖는 변수의 주소는 4 바잍의 첫주소가 전체 4 바잍의 공간을 의미, 이중 실수형 자료를 갖는 변수의 주소는 8 바잍의 첫주소가 전체 8 바잍의 공간을 의미, 표시 int exp_a; int * exp_a_p; exp_a = 12; exp_a_p = &exp_a; 변수 주소 - 주소 연산한(주소 연산자&를 붙인) &exp_a 1. 자료값(내용물) - 변수에 대입된 자료 2. 연산 결과 - (자료가 담긴) 해당 변수의 (기억공간의) 주소 3. 연산 목적 - 주소를 통해 해당 자료형의 공간 표시 포인터 exp_a_p 1. 자료값(내용물) - 가리키는(지시, 지적하는, pointing) 해당 자료형 자료의 시작 주소, 첫주소 2. 목적 - 가리킨(지시한, 지적한, pointing) 주소를 통해 기억공간(대상, 목적물)을 간접참조하여 자료를 복사하거나 변경 3. 조건 - 간접참조가 목적이므로 지적한 변수와 자료형이 일치 필요 가르킴, 지시, 지적, pointing = 주소, 주소값 저장(보유) 가르키는 것, 지적 대상은 목적에 따라 자료, 자료값이기도 하고 공간이기도 함 1. 지적된 해당 자료형의 변수에 저장된 자료값을 참조(복사)하려면 실행문 우변에 위치하여 참조 연산자 별을 붙여 지적하는 주소에(를 통해) 접근하여 자료값을 간접참조(복사) 2. 지적된 해당 자료형의 변수의 공간에 접근하여 자료를 참조(변경, 재할당?)하려면 실행문 좌변에 위치하여 참조 연산자 별을 붙여 지적하는 주소인(주소를 통해) 공간에 접근하여 자료값을 간접참조(변경) 대상에 접근하여 참조(사용)하기 위해 참조 연산자 별 표시 직접참조: 변수에 접근하여 자료값을 읽거나(복사하거나) 변경 간접참조: 변수의 주소를 통해 자료값을 복사하거나 변경 배열명 - 배열의 첫주소인 상수 역할 구분 int * pa = &a; 선언시 선언문에 변수 a의 주소를 포인터 변수 pa에 저장 포인터 변수 pa가 a의 주소 &a를 저장하고 있으므로 pa == &a *pa는 a의 주소 &a를 통해 참조한 a의 자료값이므로 *pa == *&a == a &pa는 포인터 변수 pa 자체의 주소, 다중 포인터에서 사용 scanf에서 입력받아 변수 a에 직접 저장할 수 없어 그 주소 &a를 통해 넣음 종료 2023년 8월 18일 금 21시44분 태평양 시간 3/3
@sweetdreams-tq9xz
@sweetdreams-tq9xz 2 жыл бұрын
혹시 포인터가 &변수 인거면 예를들어서 int a; scanf_s("%d", &a); 이것도 a의 주소를 불러오는 포인터인가요?
@with2511
@with2511 2 жыл бұрын
네~ a변수의 주소를 가르킵니다~
@homies5593
@homies5593 Жыл бұрын
감사합니당 ㅜ
@_GAJI_
@_GAJI_ 3 жыл бұрын
C언어 개발자여서 그런지...포인터 없는 언어 쓰는게 더 힘드네요
@with2511
@with2511 3 жыл бұрын
오~~ 훌륭하십니다!
@simonk906
@simonk906 3 жыл бұрын
고딩때 비주얼 베이직 배울때는 코딩에 소질이 있는줄 알았는데, 대학때 c언어 포인터를 만나고 언어를 포기 했습니다 ㅋ
@with2511
@with2511 3 жыл бұрын
네 아주 예전에도 C언어 포인터에서 갈렸죠. .. 개발을 할지 안할지..
@신지현-w1x
@신지현-w1x 2 жыл бұрын
미쳤다 이해너무잘됨 후.. 정처기 조지러간다
@zhdkffk8210
@zhdkffk8210 2 жыл бұрын
이해가 잘 되는 것 같은데 막상 예제놓고 보면 헷갈리네요 아직 안 익숙한가봐요 ㅠ
@학현-f9f
@학현-f9f 3 жыл бұрын
오늘 털리고 왔네요.. ㅠㅠㅠㅠㅠㅠ
@with2511
@with2511 3 жыл бұрын
ㅠㅠ 다음에 또 화이팅입니다.. ㅠ
@라이언형아
@라이언형아 2 жыл бұрын
안녕하세요 ㅜㅜ 지금 c언어 포인터에서 울고있는 공부생입니다,, 궁금한게있는데 int* p 와 int *p가 다른건가여........????????공부하면서 책보면서 혼자하는데,,,,,,,다른것처럼 적혀있는데여 유튜브나 이런데봐두 다들 int *p 라고 알려만주시구 int* p에 대해선 없어서여
@with2511
@with2511 2 жыл бұрын
int *p는 포인터 변수를 선언하는 의미이구요. int p는 p라는 int형 변수를 선언한 것입니다.
@stacker__430
@stacker__430 2 жыл бұрын
int* P 정수형 포인터 타입 변수 (int*) 변수 P를 묵시적 형변환
@user-sun3856
@user-sun3856 2 жыл бұрын
int *p라는 선언문에서 *은 p라는 식별자가 포인터임을 표시하는겁니다 int라고 앞에 써있으니 int형을 다루는 포인터죠
@tube-wp5yn
@tube-wp5yn 2 жыл бұрын
int n , int *p 라고할때, p= &n 이라고 생각하는데 맞나용 n은 그냥값 &n 은 n의 주소값 p는 n의주솟값을 포인터 변환한것 이라고 생각해야하나요? 아니면 *p 자체를 한꺼번에 생각하고 p만 따로떼서 생각하면 뭐라고 표현할수 있나요?? *p = *&n 이렇게 돼야 식이 맞지않나욘?? *p = &n 는 p= &n 과 식이 달라서 헷갈립니다ㅠㅠㅠ *p 는 p를 포인터한거, p는 n의 주소, n은 변수 ,
@chancethe9374
@chancethe9374 9 ай бұрын
int* p 라고 선언하면 p도 변수 입니다. 다만 다른값은 넣지 못하고 주소만 넣을수 있는 변수죠. 그래서 포인터 변수 라고 부르는거고요.. 때문에.. p = &n 이렇게 쓰면.. n의 주소값이 들어갑니다.예를 들어 n의 주소값이 100번지라고 가정하면 100이라는 숫자가 들어가겠죠. int n = 5 ; int* p = &n; 이렇게 하면 p 에는 100 이라는 번지가 저장되고 그 번지에 가보면 5라는 숫자가 저장되있다는 뜻입니다. 그래서 *p = *p+1; 이렇게 하면 100번지에 있는 값에다 1을 더했기때문에.. n 을 출력하면 6이 나옵니다. 그래서 말씀하신대로 *p 와 *&n 은 같습니다. *p 와 &n 은 같지 않습니다. 만약 p가 int** p; 이렇게 2차원 포인터로 선언되었다면 *p = &n ; 이렇게 n의 주소값을 *p에 할당할수 있겠죠.
@sunmookim3899
@sunmookim3899 2 ай бұрын
안녕하세요. 영상을 보는데 설명이 어렵워서 해서 이해가 안되네요. 감사합니다.
@gourmettraveljeoung
@gourmettraveljeoung 3 жыл бұрын
아 진짜 어렵게 냈네...
@gubsingyo3
@gubsingyo3 5 ай бұрын
int *p;에서 거름
깨알 C언어 | 23. 포인터
17:06
흥달쌤
Рет қаралды 42 М.
포인터가 뭐고 왜 쓰는건가요?
8:07
얄팍한 코딩사전
Рет қаралды 124 М.
Жездуха 42-серия
29:26
Million Show
Рет қаралды 2,6 МЛН
БАБУШКА ШАРИТ #shorts
0:16
Паша Осадчий
Рет қаралды 4,1 МЛН
Непосредственно Каха: сумка
0:53
К-Media
Рет қаралды 12 МЛН
Thank you mommy 😊💝 #shorts
0:24
5-Minute Crafts HOUSE
Рет қаралды 33 МЛН
you will never ask about pointers again after watching this video
8:03
위 수식이 틀린 이유는? (개발자 면접 타임)
5:34
코딩애플
Рет қаралды 1,3 МЛН
[Q&A] 영상답변 | 포인터(복잡함주의)
18:19
흥달쌤
Рет қаралды 10 М.
평생 써먹는 코딩 공부 순서, 코딩 고수는 보지 마세요!
15:02
스파르타 연구소
Рет қаралды 281 М.
Жездуха 42-серия
29:26
Million Show
Рет қаралды 2,6 МЛН