Explaining Pointers Until I Go Insane

  Рет қаралды 245,173

Mults

Mults

3 ай бұрын

To try everything Brilliant has to offer-free-for a full 30 days, visit brilliant.org/Mults . You’ll also get 20% off an annual premium subscription.
Hello there! I've been wanting to talk about quirky pointers for a while. They make no sense sometimes.
Music used in the video:
- Sewer surfing: • TMNT 4 (SNES) Music: S...
- Flower garden: • Yoshi's Island OST - F...
- Vordt of the Boreal Valley: • Vordt of the Boreal Va...
- Pizza Parlor: • Club Penguin - Pizza P...
- Figure-8 Circuit: • Mario Kart DS Music - ...
- Mii Channel Theme: • Nintendo Wii - Mii Cha...
- The Cyber Sleuth: • The Cyber Sleuth - Dig...
- Bad Bully: • Kizumonogatari II ost ...
- Wii Sports - Title: • Wii Sports - Title (HQ)
- Spark Mandrill: • Mega Man X OST - Spark...
- Hope Ster: • Hope Ster - Digimon St...
- Flame Mammoth: • Megaman X - Flame Mamm...
- Alleycat Blues: • TMNT 4 (SNES) Music: A...
- Listen!!: • K-ON! - Listen!! Instr...
- Going Up: • TMNT 4 (SNES) Music: G...
- Still, Move Forward: • Still, Move Forward! (...
- Royal Knights: • Royal Knights - Digimo...
- A Dish is Best Served Cold: • Tee Lopes - A Dish Bes...
- ミカヅキBIGWAVE -Emotional Prism 感情的なプリズム: • ミカヅキBIGWAVE - Emotiona...
This video was sponsored by Brilliant.
#Mults

Пікірлер: 759
@MultsElMesco
@MultsElMesco 3 ай бұрын
Hello everyone! I've been doing some mix and match with my content style lately. Just trying new things. Let me know what you think :) To try everything Brilliant has to offer-free-for a full 30 days, visit brilliant.org/Mults You’ll also get 20% off an annual premium subscription.
@mxblock
@mxblock 3 ай бұрын
Not a regular viewer (yet), but - This right here is literally a master piece for me. Educational, something interesting, memes (not to in you'r face / loud audio - still prominent to be entertaining), relatability, the ever growing crazieness, straight to the point, not to short nor to long, right volume for music and mic, the outro song - all just perfect. Keep it up!
@NeostormXLMAX
@NeostormXLMAX 2 ай бұрын
I recognize that digimon cybersleuth ost
@oioio-yb9dw
@oioio-yb9dw 10 күн бұрын
You escaped pointer hell with that add 😅
@oioio-yb9dw
@oioio-yb9dw 10 күн бұрын
Subscribed🫡
@XinTongXia-d2o
@XinTongXia-d2o 2 күн бұрын
btw, anyone know what's font used in the video? looks pretty nice
@tuhkiscgibin6627
@tuhkiscgibin6627 3 ай бұрын
If a codebase has any of this stuff, you'll know it's been backdoored.
@atomgutan8064
@atomgutan8064 3 ай бұрын
lol exactly. this is extreme obfuscation
@tuhkiscgibin6627
@tuhkiscgibin6627 3 ай бұрын
@@atomgutan8064Some Jia Tan shit
@atomgutan8064
@atomgutan8064 3 ай бұрын
@@tuhkiscgibin6627 lmao this is the new backdoor reference now ig
@avoavoavo
@avoavoavo 3 ай бұрын
Once committed, always committed. No explanation is needed. It works.
@tosemusername
@tosemusername 3 ай бұрын
Well, the person who backdoored it understood it, so jokes on you :P
@vulnoryx
@vulnoryx 3 ай бұрын
"say pointer again" "fuck you"
@user-qr4jf4tv2x
@user-qr4jf4tv2x 3 ай бұрын
is that rick and morty
@vulnoryx
@vulnoryx 3 ай бұрын
@@user-qr4jf4tv2x yes
@nexushare8105
@nexushare8105 2 ай бұрын
damn how did i read it in rick and morty voice in my head 😆
@vulnoryx
@vulnoryx 2 ай бұрын
@@user-qr4jf4tv2x indeed it is
@ThisIsAnAccount
@ThisIsAnAccount 2 ай бұрын
Did you just... insult me with a **pointer**? Son of a..
@Spitfire720
@Spitfire720 3 ай бұрын
Aight I'm never listening to the word "pointer" again
@deltamico
@deltamico 3 ай бұрын
"pointer" You can read it instead. You're welcome
@nodrance
@nodrance 3 ай бұрын
I point on her... Wait
@deleteddeleted1940
@deleteddeleted1940 3 ай бұрын
learn about references!
@jeremymcadams7743
@jeremymcadams7743 3 ай бұрын
Let me give you a few pointers about how to get over this issue
@mux1c
@mux1c 2 ай бұрын
I'd like your comment, but it's at 911 and I can't ruin that
@eleinaedelweiss6215
@eleinaedelweiss6215 3 ай бұрын
Who the hell would write the last one, without questioning their lives decisions.
@etherstrip
@etherstrip 3 ай бұрын
…people making youtube videos?
@Elias01056
@Elias01056 3 ай бұрын
who the fuck would use *
@danilbutygin238
@danilbutygin238 2 ай бұрын
@@Elias01056 i am
@Elias01056
@Elias01056 2 ай бұрын
@@danilbutygin238 why?
@danilbutygin238
@danilbutygin238 2 ай бұрын
@@Elias01056 long-term habit
@Suspaghetti
@Suspaghetti 3 ай бұрын
You realize how complicated pointer syntax is when the best explanation of how to read complex statements is in a funny YT video
@Mr.Not_Sure
@Mr.Not_Sure 2 ай бұрын
Well, nobody writes them in the first place. That's why `typedef` exists.
@garfield1964
@garfield1964 Ай бұрын
it's in a funny YT video because the concept--spiral rule--was documented before the youtuber was born and is prolific amongst anyone who has made efforts to properly understand C
@Suspaghetti
@Suspaghetti 27 күн бұрын
@@garfield1964 Yes, definitely. It's just that most [modern] beginner C books and tutorials skip this, even though it's essential. I was actually introduced to the spiral rule by this video and it blows my mind how not widespread it is, given its simplicity.
@ry6554
@ry6554 3 ай бұрын
Honestly, An array of functions sounds pretty dope. Nevermind, an array of pointers to functions sounds pretty dope.
@VivekYadav-ds8oz
@VivekYadav-ds8oz 3 ай бұрын
ain't that the same? or are we saying "an array of pointers to function pointers" (effectively double-indirection) in the second one?
@theepicguy6575
@theepicguy6575 3 ай бұрын
Well, you can't have arrays of functions in the first place Only pointers to functions
@user-uf4rx5ih3v
@user-uf4rx5ih3v 3 ай бұрын
In C, you actually cannot store functions inside arrays anyway, the compiler will silently convert that code into a pointer to that function instead.
@jrstf
@jrstf 3 ай бұрын
Is not every C++ member function referenced through an array of pointers to functions?
@pitri_hub
@pitri_hub 3 ай бұрын
@@jrstf Per default, member functions are just statically compiled into the calling code. But it is true for virtual functions. They are referenced in the vtable, which exists for each type with virtual functions. Each of these objects then has an internal pointer to its respective vtable, which contains the pointers to the implementation defined procedures. This is how dynamic polymorphism is implemented.
@Hallilo
@Hallilo 3 ай бұрын
I honestly never had any issues understanding basic and more advanced pointer stuff, but THIS is some actual good stuff LMAO great video
@ThisShitWontWor
@ThisShitWontWor 3 ай бұрын
12 years old me learning C++ : "Ok so, its a box containing... a box, ok?, containing a box... fuck it"
@kaustubhsonar4613
@kaustubhsonar4613 2 ай бұрын
Bring me that stuff which you are smoking
@dipereira0123
@dipereira0123 3 ай бұрын
to whoever reached a point in life where you ended up here or doing this, i really hope you find inner peace one day...
@RT-ym9us
@RT-ym9us 2 ай бұрын
A Pointer in life
@CapeSkill
@CapeSkill 2 ай бұрын
@@RT-ym9us ba dum tss.
@Samurai_2552
@Samurai_2552 17 күн бұрын
No
@moneteezee
@moneteezee 3 ай бұрын
im actually glad i found this video, you explained this well and now i know how to interpret those long lines
@JoaoJGabriel
@JoaoJGabriel 3 ай бұрын
It all can get stupidly complicated as we've seen, but the syntax follows simple rules: 1. start reading from the identifier out 2. favor [ ] and ( ) over * int (*(*x)[ ]) ( ): - Following rule #1, we start at x x - The identifier x is alone in parentheses with an asterisk, so it is [§1] a pointer *x - Outside of the parentheses, we follow rule #2, so it is [§2] an array (*x)[ ] - We're left with an asterisk inside the parentheses, so [§3] pointers *(*x)[ ] - Outside of the parentheses, rule #2, [§4] functions (*(*x)[ ])( ) - The functions return [§5] int putting §1, §2, §3, §4 and §5 together: x is (§1) a pointer to (§2) an array of (§3) pointers to (§4) functions that return (§5) an integer Once you got the hang of it, you can rewrite the example like: * [ ] * ( ) -> int And stitch things together in a way that makes sense. "->" means "returns" and it's optional/redundant (anything immediately after parentheses in this notation is a return anyway) Take the example of 5:34: [ ] * * (* char, * (* char) -> * int) -> [ ] * (* * char, * ( ) -> * char) -> * int Array of pointers to a pointer to a function that takes (a pointer to a character and a pointer to a function that takes (a pointer to a character) and returns a pointer to an integer) and returns an array of pointers to a function that takes (a pointer to a pointer to a character and a pointer to a function that returns a pointer to a character) and returns a pointer to an integer It looks insane, but it's not that difficult to wrap your head around if you're writing it following those two simple rules
@nexushare8105
@nexushare8105 2 ай бұрын
bro i was with you util i expanded ur explanation... after expanding it i sad( i aint reading all this sheet lol) , but hey, great that u can explain this
@JoaoJGabriel
@JoaoJGabriel 2 ай бұрын
@@nexushare8105 maybe there's a way to be more concise but then that's me who can't bother xD
@lightlezs7048
@lightlezs7048 2 ай бұрын
My man, using asterisks here for anything but pointers is fucking evil, was there really no other way?
@JoaoJGabriel
@JoaoJGabriel 2 ай бұрын
@@lightlezs7048 hahahaha good point, I'm gonna change that
@JoaoJGabriel
@JoaoJGabriel 2 ай бұрын
@@lightlezs7048 better?
@halflight8811
@halflight8811 3 ай бұрын
this is what I understood from 3:10 - arr[0] -> func1 => int1 - arr [1] -> func2 => int2 x ->arr - arr[2] -> func3 => int3 - arr[3] -> func4 => int4 - arr[4] -> func5 => int5
@NicolasChanCSY
@NicolasChanCSY 3 ай бұрын
A programmer goes to therapy. Therapist: Please tell me what you are scared of. Programmer: I am scared of pointers. Therapist: Okay, let me give you an array of pointers to handle them. Programmer: 😱😱😱
@no-ld3hz
@no-ld3hz Ай бұрын
3:24 funnily enough this is how dynamic dispatch works in c++, each class (implicitly) creates a pointer to a global array of function pointers. This is also known as a virtual table or vtable/vftable as it contains the list of "virtual" functions for that class.
@BaneDestabapillado
@BaneDestabapillado Ай бұрын
Small tip for 1:20, you can order malloc like you did just by manually asking for each memory "sizeof(char) * 6..." but if you make a tipedef of your struct, you can just ask for a "sizeof(FUCKER)" and it will do the same, but far easier to read, and simpler
@marcsfeh
@marcsfeh 3 ай бұрын
C's syntax makes things excessively hard to parse, in other languages like C3 or more Pascal style languages (like Go and Odin) it's much more clear how these declarations compose
@Apis035
@Apis035 3 ай бұрын
Odin makes me realize that C's syntax is absolute mess. Odin's syntax makes writing function pointer really easy to understand 👍
@user-sl6gn1ss8p
@user-sl6gn1ss8p 3 ай бұрын
It's a feature to sure you realize you're doing something bad : p
@Jutastre
@Jutastre 3 ай бұрын
I think the trick to parsing C declarations is to go from the inside (the name) out. Although you still have to know parser priority. Like the animation at 2:40, except it messes up the priority by looking at "int" before [20]
@Jutastre
@Jutastre 3 ай бұрын
The 4:40 example shows the inside out parsing even better. The 5:35 example seems more complicated because of the function signatures but those aren't as important to parse IME. You basically just copy that from the function in question. If you need to understand it better you just look at that function itself.
@user-sl6gn1ss8p
@user-sl6gn1ss8p 3 ай бұрын
@@Jutastre yeah, the parsing itself is pretty straightforward once you know how things associate and the relevant operator precedence. You start from the name and apply stuff to it from there - the result of doing this will generate something of the type on the left (the "return type" of the expression). Making sense of complicated definitions without naming the steps in the way is just hard by nature - C lets you expose yourself to that, but doesn't make you: you can always typedef things into reasonable steps if you'd like.
@kraqur
@kraqur Ай бұрын
5:31 and at this point I soundly fell asleep and had a very restful night in dreamland, not worrying about pointers to pointers or functions calling pointers or anything returning an int again...
@48_subhambanerjee22
@48_subhambanerjee22 25 күн бұрын
0:08 x is a pointer to an array of pointers to functions that returns an integer. Not that complicated to us Programmars : )
@jatinsharma3280
@jatinsharma3280 3 ай бұрын
Man, It felt awesome and confusing at the same time, but thanks to you I come to know the different use of pointers.
@poleve5409
@poleve5409 4 күн бұрын
function pointers are cool. But everything after it? only for the insane.
@GL0RYS
@GL0RYS 3 ай бұрын
bro lost me before the ad break 💀
@kingpen5866
@kingpen5866 3 ай бұрын
Bro really said bro 💀
@GL0RYS
@GL0RYS 3 ай бұрын
@@kingpen5866 bro really said bro cause i said bro 💀
@fodetraore6666
@fodetraore6666 3 ай бұрын
Bro realy saic bro to some bro who realy said bro to bro 's comment 💀​@@GL0RYS
@VictorMartinez-vi7jx
@VictorMartinez-vi7jx 3 ай бұрын
bro is a pointer to a bro that points to a bro
@GL0RYS
@GL0RYS 3 ай бұрын
@@VictorMartinez-vi7jx bros making sense 🙏
@adnanrasheed4366
@adnanrasheed4366 26 күн бұрын
I've forgotten my name after learning about pointers from him. This person went insane before completing pointer😄
@James-ne9td
@James-ne9td 3 ай бұрын
"For example, if I use this struct 'Fucker'" caught me completely off guard XD My main takeaway from this video though is that as a C# dev for Unity, I shouldn't touch C++ with a 5 foot pole or else risk entering pointer hell.
@vibaj16
@vibaj16 3 ай бұрын
no one actually uses crazy pointer stuff like this. Actually useful pointer stuff is simple and often feels quite elegant.
@happygofishing
@happygofishing 3 ай бұрын
random swearing is peak reddit humour
@James-ne9td
@James-ne9td 3 ай бұрын
@@vibaj16 tbf, I was being slightly hyperbolic. I do want to get round to learning C++ eventually but the combination of pointers, header files, garbage collection, and syntax is just a lot.
@user-vt9bp2ei1w
@user-vt9bp2ei1w 3 ай бұрын
@@vibaj16 It's really simple.... The library will only use (void* buf, size_t n) for ALL types. C believes that smart users know that the void* returned by the function is a specific type among the 100+ custom types, it will be a linklist + table with a specific internal mix of pointers to stack and pointers to allocated heap, and then you have to be careful about pointer casts, linklist iteration, use void* to calculate offsets, of course you will remember which one is CHAR8* string and which is CHAR16* string, finally free the heap allocation and perfectly avoid the pointer to the stack. The biggest advantage of C is that it is suitable for keeping your job.
@user-vt9bp2ei1w
@user-vt9bp2ei1w 3 ай бұрын
It's really simple.... The library will only use (void* buf, size_t n) for ALL custom types. It is linklist + table with a specific internal mix of pointers to stack and pointers to allocated heap, CHAR8* string and which is CHAR16* string.
@user-hh8jh5gw8i
@user-hh8jh5gw8i 3 ай бұрын
Entertaining and very educational for me. Seeing different uses of pointers that you tried to demonstrate and describe them made my me intrigue, but at the same time dizzy. 😂
@ANTI_UTTP_FOR_REAL
@ANTI_UTTP_FOR_REAL 5 күн бұрын
"Did you explain them?" "Yes" "What did it cost you?" "Everything"
@prism223
@prism223 3 ай бұрын
In older computers, especially Lisp machines, pointers always came with a size. A pointer was a 2-D object to the hardware. It had a location, and a size. The weirdness of C/C++ pointer types is an attempt to recapture some of the elegance of earlier hardware in a later era where the hardware forgot about data safety.
@mage3690
@mage3690 18 күн бұрын
Location + size pointers are referred to as "wide pointers" in modern C++, AFAIK. You're right though -- C's syntax is a desperate attempt to make the size portion of a wide pointer into a compile-time issue rather than a run-time issue, mostly for performance reasons.
@tvardero
@tvardero 3 ай бұрын
6:00 Bro is holding the entire class inside his variable definition The God Variable.
@dawiddulian2403
@dawiddulian2403 2 ай бұрын
A class that someone parameterised the hell out of, it's like "okay, let x point to containers upon containers of functions (class) that parse strings... but in a waythat is so parametrised and specific that you need to parse other string in your chosen function and based on result of parsing you get the answer of your call of x... ...the anser being a f***ing array ofpointers to functions! So basically the class that is x is not all - you now use this class to hold the answers of called(/callable) functions and use THEM as your ACTUAL functions that themselves take an array of strings and parse those strings collection based on (presumably, because it doesn't make much sense otherwise) the original character that is returned from chosen constexpr function (due to no parameters)... ...and all that returns an adress of where the value of it is stored, YOU KNOW, LIKE IT'S TOTALLY NORMAL.
@mazyyyy
@mazyyyy 3 ай бұрын
I FINALLY GOT POINTERS after more than 15 tutorials and another 15 "explanation" videos, you somehow made my brain click. Thank you so much!
@iCrimzon
@iCrimzon 3 ай бұрын
"Go insane?" GO MENTIONED RAAAAAAAAAAAAAAAAAAAAAAAAA
@batatanna
@batatanna 3 ай бұрын
WE GOIN OUT OF THE HOOD WITH THIS ONE 🗣️🗣️🗣️🗣️🗣️
@gruberu
@gruberu 23 күн бұрын
sanest go programmer
@finmat95
@finmat95 Ай бұрын
00:07 "So what is this?" "Obviously A NIGHTMARE."
@bubbleopter
@bubbleopter 3 ай бұрын
Such an awesome teaching style!
@john.darksoul
@john.darksoul 3 ай бұрын
I REFUSE to understand this syntax.
@faisalwahid-u7b
@faisalwahid-u7b Ай бұрын
Hahahaha
@norude
@norude 3 ай бұрын
I finally understood. The type signatures are provided not the obvious way around, but outside in. For example: int x() is a function named "x", returning an integer. But instead of "x", I can put something different and it will mean, put the whole function inside whatever is in that position. For example "int (*x)()" means to put the function inside the *x. So It's a pointer to a function. But it's not just functions, it's **everything** if we analyze the "int (*x)()" again we get: int , which means to put the integer inside something that something: () It's a function! which means, that we put our int iside the return paramater of that function what's something: * it's a pointer! which means, we put our whole function with integer return type into a pointer. that something: x It's a name "x" which means, we put our whole pointer to a function with a return type of integer into the name "x" Let's do another example: char *(*(*(**x[])())[])(); it's a char, which is in a pointer, which is in the return type of a function, which is in a pointer which is in an array which is in a pointer, which is in the return type of a function, which is in a pointer, which is in a pointer, which is in an array, which is in "x"
@sasho_b.
@sasho_b. 3 ай бұрын
Nah I mean if you understand it then great, but nah Its name first, then sufix left-to-right, then prefix right-to-left, with () being the sufix function arguments operator. I best understand it same as the compiler, start from the inside and go out, sufix prefix exit-braket. Its doesnt matter here, yes, but this also reminds you how other operators work like array access and dereference operators. *x[8] means "take the 8th member of x and dereference", where as (*x)[8] means "dereference x and take the 8th member of that"
@ahmadalzibary4337
@ahmadalzibary4337 2 ай бұрын
my honest reaction to this is: what the f$@% is that ?!?
@xtremecoding4005
@xtremecoding4005 3 ай бұрын
This video made me cry
@mvargasmoran
@mvargasmoran 3 ай бұрын
what I get from this is that the song at the end rocks.
@therealdia
@therealdia 3 ай бұрын
Ok how was this convoluted mess the thing that actually taught me how pointers work lol
@ashlandwithouttheshd
@ashlandwithouttheshd Ай бұрын
Thanks for the pointers!
@zFede_Rico
@zFede_Rico 3 ай бұрын
0:14 as soon as i read "france" i subscribed and liked the video
@oyoplayer
@oyoplayer 3 ай бұрын
I love France
@lcaainvalid1034
@lcaainvalid1034 2 ай бұрын
🇩🇪
@josephmazor725
@josephmazor725 3 ай бұрын
Actually the best explanation of these bullshit functions I’ve seen, thanks!
@Diamondyoutubization
@Diamondyoutubization 3 ай бұрын
I think this video actually made these easier to parse.
@Sky-The-Second
@Sky-The-Second Ай бұрын
Bro I sat here with a notebook trying to understand, which I did pretty easily. Excellent explanation for such a troll video!
@roryb.bellows8617
@roryb.bellows8617 Ай бұрын
You know what's funny, I've been programming in C for 15 years and I was confused at he first one. But after you broke it down I understood it perfectly. I could even see situations where it would be quite useful to know. Great video, hope you're enjoying learning computer science. I still am
@PackPosse
@PackPosse Ай бұрын
As hairy and convoluted as the examples got, you did a fantastic job of breaking them down. I’ve spent most of my time coding in python and Java, so have thankfully never had to use pointers in practice. I do, however, remember the outright confusion experienced during a college C++ class…
@landin1181
@landin1181 3 ай бұрын
Your memory view and c debugger in vscode look very nice. Could you do a video on how you set this up or just gimme some info lol im jealous.
@siddharthbhatia8815
@siddharthbhatia8815 3 ай бұрын
same
@nexushare8105
@nexushare8105 2 ай бұрын
me too
@draftofspasiba2
@draftofspasiba2 2 ай бұрын
Fr
@norude
@norude 3 ай бұрын
I think, most of the confusion comes from the syntax. For example, int (*(*x)[])() in Rust, would be Box> "Box" is Rust's pointer i32 is Rust's int
@spacemario
@spacemario 3 ай бұрын
If I understood it correctly, that's a pointer to a vector of pointers to functions that return an int, right?
@norude
@norude 3 ай бұрын
yes, it's just a lot of angle brackets, in a way that actually makes sense C works the other way around
@shanesnover4048
@shanesnover4048 3 ай бұрын
Your outermost Box is unnecessary indirection as the Vec already places the memory on the heap.
@norude
@norude 3 ай бұрын
@@shanesnover4048 that's true, but not relevant
@jrstf
@jrstf 3 ай бұрын
Imagine programming in a language where you can actually specify the type of a value (i32) rather than some kind of a suggestion which varies in meaning in every implementation and even with platform specific switches on the command line.
@quocanhhbui8271
@quocanhhbui8271 2 ай бұрын
Im watching this at 3:00am and yeah my brain is pretty much fried at this point
@dimi144
@dimi144 2 ай бұрын
I think that this is 100% the reason for the existence of the typedef keyword
@yuritsukahara
@yuritsukahara 3 ай бұрын
awesome. dude I need your fonr and vscode thee right now
@Sea_Otter
@Sea_Otter Ай бұрын
I gave this video a thumbs up even before watching it. Anyone who tries to explain pointers to us 'dumbdumbs' is definitely a modern-day Prometheus.
@vayr880
@vayr880 Ай бұрын
im new to the concept of pointers and memory allocation, since i just started learning c++ a few days ago. decided to spend an hour or so looking at this after learning the basics of pointers until i feel like i understood enough about how it all ties together, i guess i learned more about it but now i have a painful headache...
@farukyldrm8498
@farukyldrm8498 3 ай бұрын
you shoud have mentioned operator precedence. and also thr syntax related to those concepts perfectly fit into english grammar. as a Türk, ı can say it in english (up to some point) but cannot think of its meaning because we build up the noun phrases other way around
@hodayfa000h
@hodayfa000h 3 ай бұрын
My favorite programming channel
@iagopaulo2445
@iagopaulo2445 2 ай бұрын
Omg I never understood pointers so well as I do right now thanks to this video
@semmu93
@semmu93 3 ай бұрын
also all this pointer magic can be neatly swept under the rug if you use a lot of typedefs with proper names, makes the code much easier to understand for everyone
@arthyrgoldengate4599
@arthyrgoldengate4599 2 ай бұрын
Came to learn about pointers, returned with all my braincells drained. 10/10
@ffreezed5620
@ffreezed5620 3 ай бұрын
ohhh, i get it, thx :D. Finally understand pointer in my 3rd year in uni :)
@Franciscocao
@Franciscocao Ай бұрын
An array of function pointers sounds like something that could be extremely useful, but I can't imagine any situation where it would be useful
@chri-k
@chri-k Ай бұрын
You can find them all over the place in object oriented code
@ryangrogan6839
@ryangrogan6839 Ай бұрын
Im not even going to lie. This video did more for me than any amount of researching and googling. Believe it or not, i actually learned how to read pointer syntax from this cluster fuck of a video.
@proteinsheikh9544
@proteinsheikh9544 3 ай бұрын
Absolute heater 🔥🔥🔥🔥
@madalenaferreira3018
@madalenaferreira3018 3 ай бұрын
somehow this made me understand pointers better than 4 years in uni
@VivekYadav-ds8oz
@VivekYadav-ds8oz 3 ай бұрын
I can't believe I actually was able to solve the last two after fumbling on all the previous ones (mainly because of parenthesis which changed if x was a pointer to an array or an array of pointers). I think I'm cursed now.
@drominitoketchup
@drominitoketchup 3 ай бұрын
Hi, you have been found in my recommendation :O I'm watching it only 0:32 and already subscribed you. You have a funny sense of Humor btw xD.
@Komil484
@Komil484 3 ай бұрын
The way i look at it is, the way you declare a pointer, is the way you access it. So if you got int *(*p[]), you'd access the innermost value (being the int) in the same way: *(*p[i]). And then you work your way backwards To make the point(er) clearer ill go through this. So you access the int by doing *(*p[]), so *p[] is an array of pointers to int, and *p points to an array of pointers to int, and p is a pointer to an array of pointers to int
@nexushare8105
@nexushare8105 2 ай бұрын
anddd.... u just had to make this pun
@s8x.
@s8x. 3 ай бұрын
bro got every meme in his vault
@klevisimeri607
@klevisimeri607 3 ай бұрын
I like your vids a lot!
@pierrotarat
@pierrotarat 3 ай бұрын
"Great, you've explained these quite well. Now use them."
@Wazzup_Taibei
@Wazzup_Taibei 3 ай бұрын
interviewer: Great, add it to our interview question list!
@Rose-ec6he
@Rose-ec6he 3 ай бұрын
I wish this was a joke of some kind, then I wouldn't want to cry
@craftydoeseverything9718
@craftydoeseverything9718 3 ай бұрын
How did you not go insane sooner?!!?!?!???
@bakeurstew1434
@bakeurstew1434 2 ай бұрын
this is the first time i seen a sponsor segment use k-on for backround music 😂
@thfsilvab
@thfsilvab 3 ай бұрын
Even the parser gave up, and he's still going
@vesale.a7745
@vesale.a7745 3 ай бұрын
I seriously never could imagine insanity up to this level.
@akebomba1011
@akebomba1011 26 күн бұрын
I seriously couldn't imagine myself being at a point in life where I try to understand this insanity
@codingmickey
@codingmickey 12 күн бұрын
THANKS To YOU now my BRAIN is working *totally* properly
@JLSXMK8
@JLSXMK8 3 ай бұрын
3:29 --> See line 15 (3:21) for further clarification. In short, line 25 is saying that you want to first dereference the pointer, followed by selecting the function at index 0 for that pointer; then you have to de-reference that index (the array itself decays to a pointer containing the addresses of each function) in order to call the function you want from that double pointer. i.e., createFunctionPointerArray() returns "& -> {&add, &subtract}". You're making an embedded function library, I guess you could say, that the variable references, and you have to dereference all those pointers to access the function you want. Easy to understand?
@attilamiszkuly5868
@attilamiszkuly5868 3 ай бұрын
Can anyone tell me what theme is he using?
@mikaelluca8827
@mikaelluca8827 3 ай бұрын
love the soundtrack
@drominitoketchup
@drominitoketchup 3 ай бұрын
I understood 80% after 15 min totally
@tosaksettharungson
@tosaksettharungson 3 ай бұрын
I buried this nightmare 20 yrs ago. After watching I'm sure I'll get one tonight.
@sasho_b.
@sasho_b. 3 ай бұрын
Is that the all-too-common array of arrays length 8 of pointers to functions returning pointer to array of pointers to char? (The order is name, sufix, prefix, and operators on a name before sufix brackets (i.e. function argumrents) infer that the function is what is being stored in that way, after that is what is being returned; this necessitates that the type before the sufix brackets be a pointer as anything else C wouldnt know how to store) (Also the question would not parse, let alone make sense, you declare an array of arrays of undefined length, thats not allowed, if it was itd be an array of arrays of pointer pointers to functions returning a pointer to arrays len 8 with pointers to int) Or, in simple terms, its probably a number. Tldr just use c++, rust, java, python, ets. C is for pointer tricks and programming elevators, not for actual use. Unless you're making an OS, then it may come of use. C walked so that higher level languages could run.
@noobyfromhell
@noobyfromhell 19 күн бұрын
Pro tip: if you have to use raw function pointers in C++, use the new style of typedefs: using Func = void(int, int); Func* x; - much more readable IMO. In general, avoid declarations that sandwich the identifier in the middle like the plague.
@TheAnxiousOwl
@TheAnxiousOwl Ай бұрын
I'm assuming the brackets that aren't used or don't have anything in them are just placeholders for new nested variables and code to be added in the future?... Either that or code that already exists with those brackets in mind and are connected to similar code.
@sdwone
@sdwone 3 ай бұрын
Understanding pointers, is like the Great Barrier between amateur devs and the pros! Because THIS is a concept in which knowing how computers actually works, helps tremendously!
@xylh5085
@xylh5085 Ай бұрын
I'm getting a new computer soon and I'm absolutely going to make stupid and dangerous C programs with this knowledge now. Last time, I managed to make a program that randomly crashes x11
@wiltonribeiro3951
@wiltonribeiro3951 2 ай бұрын
Ok i need revisit some pointer videos before understand this
@JacksHQ
@JacksHQ 3 ай бұрын
You had me at "Fucker". Subscribed.
@Muskar2
@Muskar2 2 ай бұрын
A pointer consists of: 7, 9, 9, 9, 9, 9, 12. I.e. 7 bits unused, 12 bits for the physical offset in memory and the 9's are offsets into a page "tree" if you will . Most CPU's today only use four-level pages, so the top 16 bits (instead of 7) are unused - but Intel is starting to use five-level pages too. It's also why pages are 2^12 (4096) in size, and why large pages can be 2MB (2^(12+9)) and 1GB (2^(12+9+9)) respectively. You can cast a pointer to a number, and shift the bits into different values to clearly see how there's a clear pattern when you allocate memory etc.
@PBalint817
@PBalint817 2 ай бұрын
This makes me thankful for the C# syntax
@Herio7
@Herio7 3 ай бұрын
The biggest problem with pointers is batshit insane C syntax.
@therelatableladka
@therelatableladka 3 ай бұрын
Everytime I paused and I am shocked how i get it before you start telling how to understand it. Maybe because i have been doing reverse engineering and malware stuff for long time now. Those codes actually have hell of typecasting with different data types and sizes. But greater video !!! ❤
@harryconcat
@harryconcat 3 ай бұрын
hey I just wondering how you have memory debugger in vscode? Reading those memory bars would greatly help me on pointers! Thanks
@siddharthbhatia8815
@siddharthbhatia8815 3 ай бұрын
+1
@derpsakry4464
@derpsakry4464 23 күн бұрын
Allright, we get it. This guy pointers.
@nulldot0
@nulldot0 3 ай бұрын
Bro what's your vs code theme it looks nice
@nickpratt9338
@nickpratt9338 3 ай бұрын
Please do a vid of how you got that view of memory!
@naveenwilliam3594
@naveenwilliam3594 2 ай бұрын
Idk what the fuck happened to me but i was laughing like a fucking psycho everytime i hear the fucking word POINTER.
@satoshikei
@satoshikei 3 ай бұрын
Pro Tip: Just add another */& or put around parentheses until you get no compilation errors.
@Drugio24
@Drugio24 Ай бұрын
this actually makes sense
@glitchy_weasel
@glitchy_weasel 3 ай бұрын
Unirocanically very useful video. Mad respect at the dinosaurs who invented C lol
@graydhd8688
@graydhd8688 14 күн бұрын
Going over the needlessly idiotically complex examples legitimately helped me understand pointers more lol
@felix34ever1
@felix34ever1 3 ай бұрын
Ngl i actually understand now thanks 🥰😂
@AndersonPEM
@AndersonPEM 3 ай бұрын
I'm having PTSD from university every time you say pointers more than 2 times in a row
@psyk0oooo
@psyk0oooo 3 ай бұрын
i like your funny words magic man
Explaining Data Structures Until I Go Insane
8:02
Mults
Рет қаралды 46 М.
10 FORBIDDEN Sorting Algorithms
9:41
Ardens
Рет қаралды 832 М.
UNO!
00:18
БРУНО
Рет қаралды 3,1 МЛН
Mom's Unique Approach to Teaching Kids Hygiene #shorts
00:16
Fabiosa Stories
Рет қаралды 38 МЛН
КАК ДУМАЕТЕ КТО ВЫЙГРАЕТ😂
00:29
МЯТНАЯ ФАНТА
Рет қаралды 11 МЛН
you will never ask about pointers again after watching this video
8:03
Low Level Learning
Рет қаралды 2,1 МЛН
9 Idiots Attempt to Make a "Game" in "48 hours"
7:34
Mults
Рет қаралды 225 М.
I Made an AI with just Redstone!
17:23
mattbatwings
Рет қаралды 874 М.
The Art of Linux CLIs
8:35
Mults
Рет қаралды 155 М.
Naming Things in Code
7:25
CodeAesthetic
Рет қаралды 2 МЛН
How Roblox Went Down For 73 Hours
16:24
Kevin Fang
Рет қаралды 228 М.
Running "Hello World!" in 10 FORBIDDEN Programming Languages
18:07
How A Steam Bug Deleted Someone’s Entire PC
11:49
Kevin Fang
Рет қаралды 948 М.
I Spent 18 Months Using Rust And Regret It
38:36
ThePrimeTime
Рет қаралды 287 М.
10 weird algorithms
9:06
Fireship
Рет қаралды 1,2 МЛН
哈莉奎因以为小丑不爱她了#joker #cosplay #Harriet Quinn
0:22
佐助与鸣人
Рет қаралды 8 МЛН
ПОМОГЛА НАЗЫВАЕТСЯ😂
0:20
Chapitosiki
Рет қаралды 2 МЛН
Doing This Instead Of Studying.. 😳
0:12
Jojo Sim
Рет қаралды 22 МЛН
这是王子儿子吗
0:27
落魄的王子
Рет қаралды 20 МЛН