pointers are very eleganto
pointers are very eleganto
pointers are very eleganto
That's actually a pretty good representation.
I think this graphic should be used on all CS courses from now on
H-how did this meme clear up a confusion I have with ** pointers after all these years?
They're just pointer pointers!
Dang, that is so cool C can do that.
pointer pointers
wait until you learn about template templates in C++
Are the templates in the room with us right now?
I know a guy who knows a guy who knows a guy
If you've never seen this before, I think it's transformative to how you read C/C++ declarations and clearer up a lot of confusion for me when I was learning.
Yeah, and I'm pointing to your pointer pointer and I'm a pointer pointer pointer. Or more accurately but less funny is that I'm pointing to your pointer-to-pointer and I'm a pointer-to-pointer-to-pointer.
I'm a simple man. I see Anya, I upvote.
here, have a peanut 🥜
int int interesting
Wait we can have pointers to other pointers? Wouldn't that be redundant?
In CUDA, the corresponding malloc
cannot return the pointer to the allocated memory as runtime CUDA functions all return error codes instead. So the only way to "return" the pointer then without a return statement is to have a pointer given to that function by address, which means that you'll have a pointer-to-pointer among its arguments.
Man, this is the type of interaction I used to love on Reddit, but haven’t seen in ages.
char**
So that you can have an array of strings. It's useful to remember that in C arrays and pointers are exactly the same thing, just syntax sugar for however you want to look at it. There are a few exceptions where this isn't true however:
&
operator sizeof
alignof
which decay is a no-no char[]
or wide literal of wchar_t[]
, so like char str[] = "yo mama";
But int**
is just an array of int*
, which likewise int*
can just be an array of int
. In the picture here, we have int** anya
that is an array of int*
with a size of 1, int* anya
that is an array of int
with a size of 1, and then of course our int
there being pointed to by int* anya
.
I guess this is beating a dead horse but you can have pointers to pointers for 2D arrays.
The first pointer tells you which coulm you're on. The second pointer tells you which is the first object of each column. That way you can iterate the columns without loosing a reference to the current column you're standing on.
Why would it be redundant? You can’t even get past the main function before dealing with a char**
Quick example in straight C would be a cell in a matrix. The first pointer points to the row and the second pointer points to the cell in that row. This is am over simplification.
Not at all. In the picture above, the girl would be saying: "She knows where it is." This concept is used often in real life and in programming.
Here's a true example from my collections library:
This one uses a bit safer reference to a pointer:
Basically it allows me to modify a pointer easily.
This is why I follow communiities like this: I can learn a lot by just reading the comments on a meme. Amazing.
Now someone augment it to show what happens when we dereference the pointer.
Even better derefencing a pointer that isn't pointing at anything