Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
01/01/11 04:50
Read: times


 
#180376 - Pointers are normally the main problem when learning C
Responding to: ???'s previous message
The "normal" big problem with C is the concept of pointers. That you sometimes works directly with variables. And sometimes have variables that are just addresses to variables and where you do indirect accesses to variables.

The next thing people usually have problems with is that pointer variables allows arithmetic on either the pointer or on the value the pointer points to.

So i = i+1 and p = p+1 does completely different things, if i is a normal integer variable, while p is a pointer variable.

But the big troubles with pointers is that it is something that is important to learn while working with embedded projects. For a number of reasons, some "magic" variables just must be located at specific addresses or the program will not work. In some situations, the compiler will add other methods to hide this allocation of the magic variables. But the developer just needs to understand the concept anyway.

On a 8051, the I/O ports are basically a special form of variables. But a type of variables that the compiler itself (with help of an include file) manages to map to the physical port in the processor.

The datasheet for the processor - or for the assembler instruction set - will be totally based on the concept of addresses and addressing modes. How to access different types of variables.

Another issue people tends to have problems with is function parameters - the difference between sending a "normal" variable as a parameter, and sending a pointer as parameter. When sending a pointer (called call by reference), then the value that the pointer points to can be modified by a function. When sending a "normal" parameter, the value of the parameter are basically duplicated (call by value) so a function gets a copy of the value to play with.

The above three situations covers a huge percentage of the conceptual problems a beginner normally has when looking at C. A large part of the C language is based on pointers, so people don't have much wiggle room before they have to learn about pointers and their physical meaning.

List of 76 messages in thread
TopicAuthorDate
Partial decoding of external memory...            01/01/70 00:00      
   8 bit DATA Space            01/01/70 00:00      
      aka "PDATA"            01/01/70 00:00      
   Adres Latch            01/01/70 00:00      
      corrections to all the above replies            01/01/70 00:00      
         Partial decoding of external memory...            01/01/70 00:00      
            There are two locations in the LCD            01/01/70 00:00      
               Re: There are two locations in the LCD            01/01/70 00:00      
                  timing is the reason ...            01/01/70 00:00      
                     one fact expanded            01/01/70 00:00      
                     Thanks for the advice...            01/01/70 00:00      
                        still?            01/01/70 00:00      
                        Maybe it wouldn't hurt to spend time reading the datasheet            01/01/70 00:00      
                           Checking out the Datasheets...            01/01/70 00:00      
                              That's interesting ...            01/01/70 00:00      
                                 Not all BASIC are the same            01/01/70 00:00      
                                    does that apply to BASCOM?            01/01/70 00:00      
                                       "improvements" or extensions?            01/01/70 00:00      
                                          Modern versions of BASIC            01/01/70 00:00      
                                 Re: That's interesting ...            01/01/70 00:00      
                                    Programming on the Fringe            01/01/70 00:00      
                                       Re: Programming on the Fringe            01/01/70 00:00      
                                          To PC or not - but avoid dead ends            01/01/70 00:00      
                                          I'd recommend you think some more about all that            01/01/70 00:00      
                                             That's the key!            01/01/70 00:00      
                                             Brain pollution            01/01/70 00:00      
                                                re: teaching language            01/01/70 00:00      
                                                   Introduce a computer or introduce how to program            01/01/70 00:00      
                                                Initial attraction is fundamental flaw            01/01/70 00:00      
                                    Which concepts do you find particularly hard to grasp?            01/01/70 00:00      
                                       Pointers are normally the main problem when learning C            01/01/70 00:00      
                                          Is the problem specifically 'C', though?            01/01/70 00:00      
                                          pointers aren't unique to 'C'            01/01/70 00:00      
                                             Pointers            01/01/70 00:00      
                                             Big difference in concept - C actually unusual            01/01/70 00:00      
                                                Remember PEEK and POKE            01/01/70 00:00      
                                                Pointers            01/01/70 00:00      
                                                   Pointers and type-safety            01/01/70 00:00      
                                          big problems            01/01/70 00:00      
                                             Wrong direction            01/01/70 00:00      
                                                goes both ways            01/01/70 00:00      
                                       Re: Which concepts do you find particularly hard to grasp?            01/01/70 00:00      
                                          Not a casual subject            01/01/70 00:00      
                                             Re: Not a casual subject            01/01/70 00:00      
                                                I think it's already been said in this thread...            01/01/70 00:00      
                                                one C book should do            01/01/70 00:00      
                                                   Manzi?            01/01/70 00:00      
                                                   It might not hurt to do this in a different sequence            01/01/70 00:00      
                                                   Re: one C book should do            01/01/70 00:00      
                                                      Language matters            01/01/70 00:00      
                                                      you haven't seen ...            01/01/70 00:00      
                                                         Yes, but...            01/01/70 00:00      
                                                            Languages helps but isn't enough            01/01/70 00:00      
                                                         Re: you haven't seen ...            01/01/70 00:00      
                                                            RE: been looking at snippets            01/01/70 00:00      
                                                               Re: been looking at snippets            01/01/70 00:00      
                                                                  Details in standard + compiler manual            01/01/70 00:00      
                                                                      a book doesn't detail everything            01/01/70 00:00      
                                                                     You need to study the compiler documentation            01/01/70 00:00      
                                                                        You need to lean the language first!            01/01/70 00:00      
                                                                           my point was ...            01/01/70 00:00      
                                                                        Re: You need to study the compiler documentation            01/01/70 00:00      
                                                                           Go directly for C            01/01/70 00:00      
                                                                              i second this            01/01/70 00:00      
                                                                              Re: Go Directly to C            01/01/70 00:00      
                                                                                 C support            01/01/70 00:00      
                                                                           the big advantage of PASCAL is            01/01/70 00:00      
                                                                              C isn't that dangerous if caring for compiler warnings            01/01/70 00:00      
                                                                                 So ... C++ is not of interest in this context            01/01/70 00:00      
                                                                                    It's about bracketing claims            01/01/70 00:00      
                                                                                       I did say, "in this context", didn't I?            01/01/70 00:00      
                                                                                          Be careful with your asides!            01/01/70 00:00      
                                                                                          Always give enough context to statements            01/01/70 00:00      
                                                                                             OK ... I stand corrected            01/01/70 00:00      
                                                                                                Separate thread!            01/01/70 00:00      
                                                                                                   I hoped someone would do that            01/01/70 00:00      

Back to Subject List