Dereferencing in C
HTML-код
- Опубликовано: 3 сен 2019
- Dereferencing can be done using either the dereference operator (*) or the array subscript operator ([]). In this video we'll talk about a few quirks regarding these two operators.
Check out our Discord server: / discord
As a person who learn programming from top to bottom (I started by Java and was never told about memory) and is new to C this just blew my mind! Amazing explanation! Now everything is starting to make deeper sense.
I really like your explanations. Thank you!
Great explanation, thank you so much, please continue your great work!
Thank you very much for your wonderful videos.... please do not stop :)
ive always been confused about int* p and int *p
and thank you for showing the weird stuffs with array
had my mind blown again
Great video, I like your style.
Thank you sir, that's been really helpful!
Yea, this is a great explanation, you did a excelent work
excellent!Thank you!
Impressive!
YOU ARE AMAZING :))
GOOD VIDEO ,,, THANK YOU.
Excellent work on these vids can you please discuss pointers to multidimensional arrays and there relationships to double pointers etc, as well using single loops to iterate through multidimensional arrays. Thanks
I'll make a video on multidimensional arrays next week (as there are multiple ways to go about it).
Thank you very much for making these tremendous informative sessions available to everyone.
One question? How did you set up your VScode to pop up this "Exception Thrown" window for errors? (@4:24)
What I am using in this video is actually Visual Studio 2019 Community and it's a completely different IDE from Visual Studio Code. It has this expection pop-up function built-in
@@CodeVault I got it. Thanks.
Why would they make the symbol (*) so incredibly complicated? It has two different meanings, and both are in the context of pointers. That is just asking to be easily conflated with.
Thanks for explaining though. That helped
As you say at 2:55 , i was confused. What's different when we use int* p and int *p? Btw great tutorial sir
int* p and int *p are exactly the same thing. But, if you do:
int* p = &a;
*p = 5;
The asterisk from "int*" denotes that p is a pointer of type int. But that asterisk from down below denotes a dereference. That's what I meant at that point in the video.
@@CodeVault Great, you are very good teacher. That asterisk actually confused me. Now i understand the asterisk use for pointer assignment & dereference are not the same. Thanks
please explain about char* what does that mean?
It's a pointer to character and, depending on the context, it could represent a string.
I am curious why it is *(arr +1) instead of *(arr + 1 * sizeof(int))
Because all operations to pointers are automatically multiplied by the sizeof the data the pointer is pointing to. So:
arr + 1 is actually arr + 1 * sizeof(int) inside the compiled code
@@CodeVault Thank you so much for your clarification and further explanation. To be honest I did not expect a reply on such an old video and least of all from the creator himself, you're awesome for that. What I'm taking away from this is that what I wrote in my original comment is 1) Is valid and correct C code (correct being would work the way as described in the context of the video) and 2) Is what actually is hapenning 'under the hood'
what if we had:
int * p = a?
Is it legall ? If yes what does it mean?
It means you're going to get an error the second you dereference that pointer.
int* p = a;
This makes p point to whatever is at address 16. But since address 16 is something you don't own and is probably system reserved you'll get a crash.
@@CodeVault OK got it! Thank you very much
Now I just want in code to write out of nowhere something like 1[arr] to confuse people
That would be evil :D
haha you are kind of cute