Thursday, May 10, 2007

Campus_9 (C Interview Questions)

1. When is a switch statement better than multiple if statements?
Answer: A switch statement is generally best to use when you have more than two conditional expressions based on a single variable of numeric type.

2. What are macros?
Answer: Macros are preprocessors which are small code of snippets which are replaced in the code AS IT IS before compilation of the program.

Preprocessor is a program that processes its input data to produce output that is used as input to another program.

3. What is the difference between goto and longjmp() and setjmp()?
Answer: A goto statement implements a local jump of program execution, and the longjmp() and setjmp() functions implement a nonlocal, or far, jump of program execution.
Generally, a jump in execution of any kind should be avoided because it is not considered good programming practice to use such statements as goto and longjmp in your program.
A goto statement simply bypasses code in your program and jumps to a predefined position. To use the goto statement, you give it a labeled position to jump to. This predefined position must be within the same function. You cannot implement gotos between functions.
When your program calls setjmp(), the current state of your program is saved in a structure of type jmp_buf. Later, your program can call the longjmp() function to restore the program’s state as it was when you called setjmp().Unlike the goto statement, the longjmp() and setjmp() functions do not need to be implemented in the same function. However, there is a major drawback to using these functions: your program, when restored to its previously saved state, will lose its references to any dynamically allocated memory between the longjmp() and the setjmp(). This means you will waste memory for every malloc() or calloc() you have implemented between your longjmp() and setjmp(), and your program will be horribly inefficient. It is highly recommended that you avoid using functions such as longjmp() and setjmp() because they, like the goto statement, are quite often an indication of poor programming practice.

4. What is an lvalue?
Answer: An lvalue is an expression to which a value can be assigned. The lvalue expression is located on the left side of an assignment statement, whereas an rvalue is located on the right side of an assignment statement. Each assignment statement must have an lvalue and an rvalue. The lvalue expression must reference a storable variable in memory. It cannot be a constant.

5. Array is an lvalue or not?
Answer: Basically lvalue is a storage location where data can be stored/ assigned and moreover it is not an expression. rvalue is an expression which has a value. all lvalues can be used as rvalues. But all rvalues can't be used as lvalues. int a[100];a is always an rvalue, but a[i] can be lvalue as well as rvalue

1 comment:

Unknown said...

Hiya,

Interesting piece! Great to see someone write C Interview Questions who a fanatic is not or a complete skeptic.

The exit () function is used to exit your program and return control to the operating system. The return statement is used to return from a function and return control to the calling function. If you issue a return from the main () function, you are essentially returning control to the calling function, which is the operating system. In this case, the return statement and exit () function are similar.

Is there any function or library that will work with databases, like sql or oracle db. C just works with text databases? with xml too?
pls address me to some books about it, I am trying to build an application for database mining.

By the way do you have any YouTube videos, would love to watch it. I would like to connect you on LinkedIn, great to have experts like you in my connection (In case, if you don’t have any issues).

Thanks and Regards,
Geo