A bit of a monologue. I've always been fascinated by my experience that those that love assembler programming, dislike C, and vice versa.
I'm programmed since 1977 in HS and have worked in 4 different hardware (assembler) platforms (and a dozen languges). Every instruction set I've run across has been pretty intuitive (6502 the best of micros and the Four-Phase 32-bit mini the best instruction set ever). That is, until I looked at my first assembly listed for my first C program. What an uuuuuuuuuuuuuuuuugly instruction set. It's almost like a C-language designer designed the instruction set. However, I will say I'm vastly impressed by the quality of code generated (quite impressed actually).
Anyhoo, when I saw C in college, I couldn't understand how anyone would design a language like that when they can design one from scratch.
But, here I am. I wrote my first .bat script ever a month ago (2700 lines) and thought I'd be able to make it shorter by using C. Wrongo.
It seems char* whatever and char *whatever are identical?
When you have a pointer, are you allowed to increment it by one and keep using it? It seems the compiler will "know" it's a pointer and increment it by 4 (i.e. it's a pointer to a 4-byte INT) for you.
I see a lot of "while (joevariable)" of "if (joevariable)' but it doesn't have an == or != condition of any kind. It seems that that's the same as joevariable != 0)?
Unicode. Looks like it's simply 2-bytes per "ascii" character. I played around with printf to see if I could get a handle on what occurs and interestingly, it's like incrementing the subscript for the string increments by 2 if wchar vs. 1 for char. Is it a good habit to do things a certain way to allow unicode stuff????