跟讀練習: you will never ask about pointers again after watching this video - 通過影片學習英語口語
選擇練習模式
每種模式都會開啟全屏練習室。
103 句
如果句子過短或過長,請點選 Edit 進行調整。
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.
同頻道
FOR YOU
推薦影片
本課的詞彙與口語要點
這段影片共有 103 個句子、1434 個單詞可供跟讀。 講話部分時長為 7:59。 說話人語速較快,每分鐘約 180 個詞,會出現較多連讀和弱讀。 只有 81% 的單詞屬於英語最常用的 3,000 詞,詞彙難度較高。
影片中的重點詞彙
影片中 15 個不太常見的單詞,附發音和釋義:
- pointer /ˈpɔɪn.təɹ/ (名詞) — 教鞭. One who points.
- allocation /ˌæl.əˈkeɪ.ʃən/ (名詞) — 分配, 撥款 /撥款. The process or procedure for allocating things, especially money or other resources.
- scope /skəʊp/ (名詞) — 範圍 /範圍. The breadth, depth or reach of a subject; the extent of applicability or relevance; a domain, purview or remit.
- 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.
- dread /dɹɛd/ (名詞) — 恐怖. Great fear in view of impending evil; fearful apprehension of danger; anticipatory terror.
- 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).
- whereas /(h)wɛɹˈæz/ — 然而. In contrast; whilst on the contrary; although.
- string /stɹɪŋ/ (名詞) — 線 /線. A long, thin and flexible structure made from threads twisted together.
影片中出現的短語動詞
- come from (動詞) — 來自 /來自. To have as one's origin, birthplace or nationality.
- break down (動詞) — 壞了 /壞了, 出故障. To stop functioning.
- come up with (動詞) — 想出, 提出. To manage to produce, deliver, or present (something) by inventing, creating, thinking of, or obtaining it.
- do in (動詞) — 幹掉 /幹掉, 弄死. To kill or end; to defeat.
需要注意的發音
說話人用了 20 次縮略和弱讀形式,例如 you're, I'll, I've。請按聽到的簡短形式來說。
- “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ɪ/
如何用這段影片練習
- 先完整聽一遍影片,不要開口,記下不認識的單詞。
- 先用 0.75 倍速逐句跟讀,熟練之後再回到正常速度。
- 錄下自己的聲音並與原聲對比,特別注意 pointer, allocation, scope 這類單詞。
影片中的語法
說話人最常用的結構,並附上影片中的原話:
| 結構 | 影片中的用法 |
|---|---|
| 被動語態 be + 過去分詞 — 強調發生了什麼,而不是誰做的 | been asked · is set · is placed |
| 現在完成時 have/has + 過去分詞 — 過去發生但與現在仍有關聯的事 | that's been asked · I've laid · I've just created |
| 定語從句 who / which + 從句 — 補充說明人或事物 | variable, which is · name which is |
什麼是跟讀法?
跟讀法 (Shadowing) 是一種有科學依據的語言學習技巧,最初開發用於專業口譯員的培訓,並由多語言者Alexander Arguelles博士普及。這個方法簡單而強大:您在聽英語母語原聲的同時立即大聲重複——就像是一個延遲1-2秒緊跟說話者的影子。與被動聽力或語法練習不同,跟讀法強迫您的大腦和口腔肌肉同時處理並模模擬實的講話模式。研究表明它能顯著提高發音準確性,語調,節奏,連讀,聽力理解和口語流利度——使其成為雅思口語備考和真實英語交流最有效的方法之一。













