Implicit and explicit determine what can be passed to a method. If a method is not declared as explicit the compiler will attempt to look for any implicit conversions from the type being passed to the type the method expects. for example, if the method expects a long and you pass in an unsigned char, the compiler will not complain because an unsigned char can be implicitly converted to a long without any loss of data. If you declare the method as explicit the data type that is used in the method declaration is the data type that needs to be passed to the method. If you want to pass a char *ptr to a method that expects a long you will have to cast the char *ptr to a long when calling the method. For example, foo((long)ptr);
Chat with our AI personalities
Declaration is a promise: 'I will define (or has defined) this variable/function somewhere else'.
Actually, there is a third step, call definition. Declaration is a statement to the compiler of what type an identifier is, definition is the allocation of memory for that identifier, and initialization is the assignment of an initial value to that identifier. Usually, declaration and definition are done together, but you can also add initialization in that step if desired. int a; /* declaration and definition */ a = 1; /* initialization */ int a = 1; /* declaration, definition, and initialization */ For the case of seperate declaration and definition, consider the struct... struct _mystruct { int a; }; /*declaration */ struct _mystruct mystruct; /* definition */ struct _mystruct { int a; } mystruct; /*declaration and definition */ Note: To be more precise: struct _mystruct; /* struct declaration */ struct _mystruct { int a; }; /* struct definition */ typedef struct _mystruct MYTYPE; /* type definition */ extern struct _mystruct mystructvar; /* variable declaration */ struct _mystruct mystructvar; /* variable definition */ struct _mystruct mystructvar = {7} ; /* variable definition with initialization */ struct _mystruct { int a; } mystruct; /* struct definition and variable definition */ extern struct _mystruct { int a; } mystruct; /* struct definition and variable declaration */
The difference between a variable resistor and a rheostat is the same as the difference between six and half a dozen.
a literal is a constant value, the difference is a variable can change it's value.
The variable.