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.
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
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
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
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
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'
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.
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!
very good explanations on everything! helped a lot
Great explanation, thank you so much, please continue your great work!
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
Thank you very much for your wonderful videos.... please do not stop :)
Great video, I like your style.
Thank you sir, that's been really helpful!
Thank you!
excellent!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).
Impressive!
YOU ARE AMAZING :))
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.
GOOD VIDEO ,,, THANK YOU.
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