364
unsafeCode (lemmy.ml)
you are viewing a single comment's thread
view the rest of the comments
[-] affiliate@lemmy.world 5 points 1 week ago

i will never forgive C for making the type syntax be

char* args[]

instead of the much more reasonable

&[char] args 

it also bothers me that char* args[] and char c are “the same type” in the sense that the compiler lets you write

char c, *args[5];

with no problems. i think the C languages would be way easier to learn if they had better type syntax. don’t even get me started on C++ adding support for

auto fn_name() -> ReturnType { … }
[-] barubary@infosec.exchange 6 points 1 week ago

@affiliate Hey, you didn't even mention that char *args[] actually means char **args in a parameter list.

[-] racketlauncher831@lemmy.ml 2 points 1 week ago

It could, but not necessarily.

char **args can just mean you have a pointer which points to an address, and at that address, you can get a second address. Follow the second address, there is a char saved there.

On the other hand, char *args[] means " follow this address to find a list of characters".

[-] barubary@infosec.exchange 2 points 1 week ago

@racketlauncher831 As far as the C compiler is concerned, there is literally no difference between those two notations. If you declare a function parameter as an array (of T), the C compiler automatically strips the size information (if any) and changes the type to pointer (to T).

(And if we're talking humans, then char *args[] does not mean "follow this address to find a list of characters" because that's the syntax for "array of pointers", not "pointer to array".)

load more comments (2 replies)
load more comments (2 replies)
this post was submitted on 11 Feb 2025
364 points (95.5% liked)

Programmer Humor

32707 readers
44 users here now

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

founded 5 years ago
MODERATORS