쉐도잉 연습: you will never ask about pointers again after watching this video - 영상으로 영어 말하기 배우기

레슨 만드는 중...
1
One of the hardest things for new programmers to learn is pointers.
2
Whether it's pointers by themselves, pointers that point to arrays, or pointers that point to pointers, Something about this concept just drives people crazy.
3
And if you're a new programmer, well, you're not alone.
4
I was one of those people when I learned C back in the day, and like you, I was eager to understand.
5
In this video, I'll show you what a pointer is so you can fully understand how they work, the syntax of pointers so you can easily read them,
6
and finally, why everyone cares so much about pointers and what they're used for.
7
Before we start, if you're new here, hit that subscribe button and while you're at it leave a like.
8
I put out videos demystifying topics like this and much more on a weekly basis.
9
What is a pointer?
10
The question that's been asked since the beginning of time.
11
well, maybe not that long, but computer science students have been asking this question for a while.
12
Pointers are not that complicated, and let me show you why.
13
To understand what a pointer is, we need to first understand how memory works.
14
So here I've laid out an example of memory.
15
Memory in our example has two features: an address, and a value.
16
The address is the location of the memory, meaning where that memory lives.
17
And the value of that memory is the data stored at that location, meaning what memory lives there.
18
So for example, if I put a four here, What does that mean?
19
All that means is that the value 4 lives at location hex 1000.
20
Easy.
21
And the notation in C, for example, may be int x equals four, which gets allocated to that memory on the stack, and now that number lives there.
22
So what happens now if at another location I put the number hex 1000 at address hex 1004?
23
I've just created a pointer.
24
You may be thinking, low level learning, how is this possible?
25
That's just a number at a location.
26
Well guys, that's the secret.
27
A pointer is just a value that happens to be an address.
28
Mind blown.
29
By setting the value of one variable equal to the address of another, that variable now points to the other.
30
For new programmers, though, most of the time, that isn't as easy as it seems.
31
One of the most common issues new programmers have with pointers is the syntax used to create them.
32
The combination of stars and ampersands and arrows and more stars creates a lot of confusion, so let's break this down using our previous example.
33
In our last example, we made an integer x whose value was 4 at location hex 1000.
34
After that, we made a pointer that lived at address hex 1004, whose value was $1000.
35
So how do we do that in C?
36
We can do that using two lines of code, and I'll break them down part by part.
37
The first line is int x equals four.
38
This line is pretty straightforward.
39
The first part, integer, is the type of the variable, which is 4 bytes wide, and this will matter later in the video.
40
The second part is the name.
41
Nothing special here, just the variable name x.
42
And then after that, we put an equal sign, which when describing C, we can verbalize the equal sign to is C set to.
43
Finally, the value 4.
44
So the final sentence we've come up with is, Integer whose name is X is set to the value 4.
45
Okay.
46
Easy part over, next is the hard part.
47
To make a pointer to x like we did in our example, I would say the following line of C: int *px is equal to ampersand x.
48
Now I know that sounds pretty crazy, a little scary, Let's break it down piece by piece.
49
From left to right, we can see the type again, starting with int.
50
But next we see the dreaded Asterisk.
51
What does that mean?
52
When an asterisk is placed next to a type, it modifies the type, meaning that our variable is now a pointer to an integer.
53
So our variable here points to a four byte value.
54
Next, the variable's name which is Px or pointer to x, You can name it whatever you want, but this is a good habit using "P" to denote that it's a pointer.
55
and then after that are equal sign, which again means is set to.
56
Ah, and then the next dreaded character, the Ampersand.
57
Whenever you see an ampersand just think in your head the address of.
58
So this means the address of x.
59
Our final sentence here is, Int pointer.
60
P X is set to the address of X.
61
So, what does this do for us?
62
Well now by using the pointer, we have a way of accessing x by reference instead of by value.
63
So for example, if we wanted to copy the value of x to a new variable using that pointer, we could do that pretty easily with this new bit of code.
64
We'll say that int y equals *px.
65
Now what is this code doing?
66
Let's break it down.
67
Again, y, just like x, is a normal integer, so no pointers yet.
68
We say that Y is set to, using that equal sign, uh oh, the asterisk again.
69
Remember how last time I said when we see an asterisk, it's used to modify a type if a type is near it?
70
Well, here there is no type.
71
When it's used alone this way, the asterisk is referred to as a "d" reference.
72
The dereference means go to the address pointed to by the pointer and grab that value.
73
So, because px points to x, The dereference will go and grab that value and it will set Y equal to x.
74
So when reverbalizing C, when you see an asterisk by itself, you can say "the thing pointed to by."
75
This would mean that the final verbalization of this line of C is
76
integer y is set to the thing pointed to by p x.
77
By doing this, we can pass around X by reference instead of value.
78
And why that matters, I'll explain in the next part of the video.
79
The final concept that could use people the most when learning about pointers is why does anyone use them?
80
The syntax is confusing, my programs crash all the time when I use them, why does anyone bother?
81
Well, the answer is because we have to.
82
To avoid making code that is impossible to read or unscalable, we break down functions based on the action that they perform,
83
So here I have a small snippet of C where I have a function that updates the age of a person structure.
84
The problem is that the structure I'm editing is not in scope of the editing function.
85
To get around this, we pass the struct by reference so that now the pointer to the structure
86
is in scope of update struct and can therefore be edited.
87
Using pointers like this keeps our code clean and understandable while reducing the amount of space that we use by not copying.
88
Another reason that pointers are inevitable when coding in C is the idea of using static versus dynamic memory allocation.
89
static allocation is typically a variable that goes onto the stack, a place that is always in scope for the function that is running it.
90
However, when you're using dynamic allocations that come from the heap through malloc or sbreak or other kinds of memory allocators,
91
you are going to get a pointer to memory that is out of scope.
92
If you ever want to be able to use this kind of memory, you need to know how pointers work.
93
The primary difference between dynamic and static allocations is
94
that static allocations are things
95
that are known to have a fixed size at compile time
96
whereas dynamic allocations can be changed in size as the program runs.
97
Here you see I allocate a string of 100 bytes to be pulled from the heap
98
But that 100 bytes could have come from a user input or something else.
99
If you're having a hard time with C, don't be discouraged.
100
Pointers do take a minute to master, but once you get them, you'll know it and you'll feel like a real low level wizard when you do.
101
Guys, I had a fun time making this video.
102
If you enjoyed this, do me a favor, hit like, hit subscribe, and I'll see you next week.
103
Take care.

이 레슨의 어휘와 말하기 포인트

이 영상에는 섀도잉할 문장 103개와 단어 1434개가 있습니다. 말하는 구간의 길이는 7:59입니다. 화자는 분당 약 180단어로 빠르게 말하므로 연음과 약하게 발음되는 소리가 많습니다. 영어에서 가장 많이 쓰이는 3,000단어에 속하는 단어가 81%뿐이라 어휘가 어려운 편입니다.

이 영상의 핵심 어휘

영상에 나오는 덜 흔한 단어 15개를 발음, 뜻과 함께 정리했습니다.

  • pointer /ˈpɔɪn.təɹ/ (명사) — 교편. One who points.
  • programmer /ˈpɹoʊɡɹæmɚ/ (명사) — 프로그래머. One who writes computer programs.
  • edit /ˈɛdɪt/ (동사) — 편집하다. To change a text, or a document.
  • syntax /ˈsɪn.tæks/ (명사) — 통어론, 구문론. A set of rules that govern how words are combined to form phrases and sentences.
  • stack /stæk/ (명사) — 무더기. A large pile of hay, grain, straw, or the like, larger at the bottom than the top, sometimes covered with thatch.
  • subscribe /səbˈskɹaɪb/ (동사) — 구독하다. To write (one’s name) at the bottom of a document; to sign (one's name).
  • modify /ˈmɑ.dɪˌfaɪ/ (동사) — 수정하다. To change part of.
  • topic /ˈtɑpɪk/ (명사) — 화제, 주제. A subject; a theme; a category or general area of interest.
  • complicated /ˈkɑm.plɪˌkeɪ.tɪd/ (형용사) — 복잡하다. Difficult or convoluted.
  • refer /ɹɪˈfɜː/ (동사) — 언급하다. To direct the attention of (someone toward something).
  • string /stɹɪŋ/ (명사) — 끈. A long, thin and flexible structure made from threads twisted together.
  • scary /ˈskɛə.ɹi/ (형용사) — 공포의, 무섭다. Causing fear or anxiety
  • versus /ˈvɝsəs/ — 대. Against; in opposition to.
  • habit /ˈhæb.ɪt/ (명사) — 습관, 버릇. An action performed on a regular basis.
  • confusion /kənˈfjuːʒən/ (명사) — 혼란. A lack of clarity or order.

주의할 발음

화자는 you're, I'll, I've 같은 축약형과 약화된 형태를 20번 사용합니다. 들리는 대로 짧게 발음하세요.

  • “sh”와 “zh” 소리: allocation /ˌæl.əˈkeɪ.ʃən/, confusion /kənˈfjuːʒən/, notation /noʊˈteɪʃən/
  • 긴 단어 — 강세 위치에 주의: allocation /ˌæl.əˈkeɪ.ʃən/, complicated /ˈkɑm.plɪˌkeɪ.tɪd/, inevitable /ɪˈnɛvɪtəbəl/, allocator /ˈæl.ə.keɪ.tə/, demystify /diːˈmɪstɪfaɪ/

이 영상으로 연습하는 방법

  1. 먼저 말하지 않고 영상을 끝까지 듣고 모르는 단어를 적어 둡니다.
  2. 0.75배속으로 한 문장씩 섀도잉을 시작하고, 익숙해지면 보통 속도로 돌아갑니다.
  3. 자신의 목소리를 녹음해 원본과 비교하고, pointer, programmer, edit 같은 단어에 특히 주의합니다.

이 영상의 문법

화자가 가장 많이 쓰는 문형을 영상 속 실제 표현과 함께 정리했습니다.

문형영상 속 표현
수동태 be + 과거분사 — 누가 하는지보다 무슨 일이 일어나는지에 초점been asked · is set · is placed
현재완료 have/has + 과거분사 — 과거의 일이 지금도 관련이 있을 때I've laid · I've just created · we've come
관계절 who / which + 절 — 사람이나 사물에 대한 추가 정보variable, which is · name which is

쉐도잉이란? 영어 실력을 빠르게 키우는 과학적 방법

쉐도잉(Shadowing)은 원래 전문 통역사 훈련을 위해 개발된 언어 학습 기법으로, 다언어 학자인 Dr. Alexander Arguelles에 의해 대중화된 방법입니다. 핵심 원리는 간단하지만 매우 강력합니다: 원어민의 영어를 들으면서 1~2초의 짧은 지연으로 즉시 소리 내어 따라 말하는 것——마치 '그림자(shadow)'처럼 화자를 따라가는 것입니다. 문법 공부나 수동적인 청취와 달리, 쉐도잉은 뇌와 입 근육이 동시에 실시간으로 영어를 처리하고 재현하도록 훈련합니다. 연구에 따르면 이 방법은 발음 정확도, 억양, 리듬, 연음, 청취력, 말하기 유창성을 크게 향상시킵니다. IELTS 스피킹 준비와 자연스러운 영어 소통을 원하는 분들에게 특히 효과적입니다.

섀도잉 방법: 단계별 전체 가이드 읽기 →