FAQ's in C.
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
Section 1. Declarations and Initializations
1.1: How do you decide which integer type to use?
A: If you might need large values (tens of thousands), use long.
Otherwise, if space is very important, use short. Otherwise,
use int.
1.4: What should the 64-bit type on a machine that can support it?
A: C9X specifies long long.
1.7: What's the best way to declare and define global variables?
A: The best arrangement is to place each definition in some
relevant .c file, with an external declaration in a header file.
1.11: What does extern mean in a function declaration?
A: Nothing, really; the keyword extern is optional here.
1.12: What's the auto keyword good for?
A: Nothing.
1.14: I can't seem to define a linked list node which contains a
pointer to itself.
A: Structures in C can certainly contain pointers to themselves;
the discussion and example in section 6.5 of K&R make this
clear. Problems arise if an attempt is made to define (and use)
a typedef in the midst of such a declaration; avoid this.
1.21: How do I declare an array of N pointers to functions returning
pointers to functions returning pointers to characters?
A: char *(*(*a[N])())();
Using a chain of typedefs, or the cdecl program, makes these
declarations easier.
1.22: How can I declare a function that returns a pointer to a
function of its own type?
A: You can't quite do it directly. Use a cast, or wrap a struct
around the pointer and return that.
1.25: My compiler is complaining about an invalid redeclaration of a
function, but I only define it once.
A: Calling an undeclared function declares it implicitly as
returning int.
1.25b: What's the right declaration for main()?
A: See questions 11.12a to 11.15.
1.30: What am I allowed to assume about the initial values
of variables which are not explicitly initialized?
A: Uninitialized variables with "static" duration start out as 0,
as if the programmer had initialized them. Variables with
"automatic" duration, and dynamically-allocated memory, start
out containing garbage (with the exception of calloc).
1.31: Why can't I initialize a local array with a string?
A: Perhaps you have a pre-ANSI compiler.
1.31b: What's wrong with "char *p = malloc(10);" ?
A: Function calls are not allowed in initializers for global or
static variables.
1.32: What is the difference between char a[] = "string"; and
char *p = "string"; ?
A: The first declares an initialized and modifiable array; the
second declares a pointer initialized to a not-necessarily-
modifiable constant string.
1.34: How do I initialize a pointer to a function?
A: Use something like "extern int func(); int (*fp)() = func;" .
0 comments:
Post a Comment