Is K&R still a reliable c language reference?

It's been decades since I wrote code (tons of it). Now I'm building stuff for the amusement of my grandchildren. But I'm obviously rusty and dusty in ye olde attic. Is Kernighan and Ritchie still a reliable basis for a refresher/reminder?
Especially as it relates to the Arduino IDE.

Arduino is written in C++ not C.

Try this reference:

which comes from C :wink: It just added a lot of features to it. But you can still write a lot of sketches using only C based on K&R book 2nd edition. That will refresh your memories, and then, you’ll go further with C++ features

It depends on which K&R. The first one which was published in 1978 predates the ISO C standard, and there were some significant changes made for the 1989 ANSI/1990 ISO standard. There was a second edition of the K&R manual published in 1988 that addressed changes that were being added in the standard being developed at that time. Since then, there have been two new editions of the C standard (in 1999 and in 2011).

The biggest change from the 1978 to the first standard is the addition of prototypes that were added from the C++ language, which was first standardized in 1998 and a revision in 2011. The Arduino IDE ‘protects’ you from having to write prototypes, as it attempts to write prototypes for you in .ino/.pde files (and it gets it wrong in some cases). There were other changes big and small as well. As others have mentioned, Arduinos are actually programmed in C++ and not C. There are some corner cases where C and C++ differ. The 2011 versions of both standards won’t apply to Arduino, since the compiler shipped with the IDE predates the standard.

Speaking from personal experience, the 1978 edition of K&R had an error in the grammar that described the C language in appedix A, in that using the grammar you could not define functions that returned pointers to other functions. I ran into this when I was writing the front end of the Data General C compiler from scratch, which did not derive from any of the UNIX sources. When I started on the MV/Eclipse compiler in 1983 or 1984, GCC was not available. By 1988 when DG switched to the Motorola 88000 chipset for the AViiON, I did use GCC as the base, and I mostly have worked on GCC since then. Even if GCC had been available in 1983, there are various technical reasons why it would have been painful to do the port. In addition, it would have been even more of a challenge to get DG legal to accept the Gnu Public License in 1983 (in 1988 it took some time to get everybody on board, and the company had more motivation to sign the agreement).