logoalt Hacker News

The C ``Clockwise/Spiral Rule''

26 pointsby etrvictoday at 1:56 PM8 commentsview on HN

Comments

pcfwiktoday at 4:28 PM

Being taught this rule in undergrad really hampered my appreciation of C. As I've said in a previous comment, the real key that unlocked understanding C declarations for me is the mantra "declaration follows use." You declare a variable in C in exactly the same way you would use it: if you know how to use a variable, then you know how to read and write a declaration for it. Once I understood this elegant idea, it became hard to enjoy using statically typed languages that eschew it.

It is explained in more detail at this link: https://eigenstate.org/notes/c-decl

show 1 reply
stephencanontoday at 4:22 PM

This comes up every so often, and while it's sort of almost true and attractive, it isn't actually correct.

The correct rule is "follow the C grammar". An easier to remember and also correct rule is "start at the identifier being declared; work outwards from that point, reading right until you hit a closing parenthesis, then left until you hit the corresponding open parenthesis, then resume reading right..." (this is sometimes called the "right-left rule": https://cseweb.ucsd.edu/~gbournou/CSE131/rt_lt.rule.html).

show 2 replies
classifiedtoday at 4:31 PM

This is useful if you're far from the internet. Here's a web site that translates the gibberish to English or vice versa:

https://cdecl.org/

Or

  apt install cdecl
on Linux.
show 1 reply
AlienRobottoday at 4:29 PM

This is why I like python.

str is a duck.

Joker_vDtoday at 4:24 PM

> "str is an array 10 of pointers to char"

Wow, imagine if it was possible to actually use a language like that do declare the type of the variable like that? Something like

    str: array [0..9] of ^Char; 
or even

    var str [10]*uint8
Just imagine...