this post was submitted on 22 May 2024
636 points (98.5% liked)

Programmer Humor

19434 readers
180 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 1 year ago
MODERATORS
 
you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 98 points 5 months ago (4 children)

Actually void* just points to anything, with no regard to the type of that thing. Pointing to the void is more accurately described by NULL pointer.

[–] [email protected] 5 points 5 months ago

In other words, void refers to the typing of the pointer, not a particular value that might be present at its target.

(But I can see how someone might find it confusing.)

[–] [email protected] 7 points 5 months ago (2 children)

So, when I want the void to point back at me, do I have to loop over void* or over NULL?
And how many iterations?

[–] [email protected] 3 points 5 months ago* (last edited 5 months ago)

as many iterations as it takes

void* x = &x;
char* ptr = (char*)&x;

while (1) {
    printf("%d\n", (unsigned int)*ptr);
    ptr--;
}
[–] [email protected] 7 points 5 months ago

For the void to point back at you just dereference the NULL pointer

[–] [email protected] 32 points 5 months ago (2 children)

"Allow me to combine the worst feature of strong typing with the worst feature of dynamic typing".

[–] [email protected] 27 points 5 months ago

Result: one of the most if not the most popular programming languages.

[–] [email protected] 5 points 5 months ago

But we need dynamic types!

...hold my beer...

[–] [email protected] 38 points 5 months ago (1 children)

Fair, though I guess my interpretation was that void* is kind of like a black hole in that anything can fall into it in an unsettling way that loses information about what it was?

[–] [email protected] 10 points 5 months ago

It erases the type of what your pointing at. All you have is a memory location, in contrast to int* which is a memory location of an int