Point Out Errors

Question 1 :

Point out the error in the program.

#include < stdio . h >
#define MAX 128

int main()
{
    char mybuf[] = "India";
    char yourbuf[] = "PARINAM";
    char *const ptr = mybuf;
    *ptr = 'a';
    ptr = yourbuf;
    return 0;
}


A). Error: unknown pointer conversion
B). Error: cannot convert ptr const value
C). No error
D). None of above
Answer : Option B

Explanation :

Step 1: char mybuf[] = "India"; The variable mybuff is declared as an array of characters and initialized with string "India".
Step 2: char yourbuf[] = "PARINAM"; The variable yourbuf is declared as an array of characters and initialized with string "PARINAM".
Step 3: char *const ptr = mybuf; Here, ptr is a constant pointer, which points at a char.
The value at which ptr it points is not a constant; it will not be an error to modify the pointed character; There will be an error only to modify the pointer itself.
Step 4: *ptr = 'a'; The value of ptr is assigned to 'a'.
Step 5: ptr = yourbuf; Here, we are changing the pointer itself, this will result in the error "cannot modify a const object".


Question 2 :

Point out the error in the program (in Turbo-C).

#include < stdio . h >
#define MAX 128
int main()
{
    const int max=128;
    char array[max];
    char string[MAX];
    array[0] = string[0] = 'A';
    printf("%c %c\n", array[0], string[0]);
    return 0;
}


A). Error: unknown max in declaration/Constant expression required
B). Error: invalid array string
C). None of above
D). No error. It prints A A
Answer : Option A

Explanation :

Step 1: A macro named MAX is defined with value 128 Step 2: const int max=128; The constant variable max is declared as an integer data type and it is initialized with value 128. Step 3: char array[max]; This statement reports an error "constant expression required". Because, we cannot use variable to define the size of array. To avoid this error, we have to declare the size of an array as static. Eg. char array[10]; or use macro char array[MAX]; Note: The above program will print A A as output in Unix platform.


Question 3 :

Point out the error in the program.

#include < stdio . h >
#include < stdlib . h >
union employee
{
    char name[15];
    int age;
    float salary;
};
const union employee e1;

int main()
{
    strcpy(e1.name, "K");
    printf("%s", e1.name);    
    e1.age=85;
    printf("%d", e1.age);
    printf("%f", e1.salary);
    return 0;
}


A). Error: RValue required
B). Error: cannot modify const object
C). Error: LValue required in strcpy
D). No error
Answer : Option B

Question 4 :

Point out the error in the program.

#include < stdio . h >
const char *fun();

int main()
{
    char *ptr = fun();
    return 0;
}
const char *fun()
{
    return "Hello";
}


A). Error: Lvalue required
B). Error: cannot convert 'const char *' to 'char *'.
C). No error and No output
D). None of above
Answer : Option C

Question 5 :

Point out the error in the program.

#include < stdio . h >

int main()
{
    const int x;
    x=128;
    printf("%d\n", x);
    return 0;
}


A). Error: unknown data type const int
B). Error: const variable have been initialised when declared.
C). Error: stack overflow in x
D). No error
Answer : Option B

Explanation :

A const variable has to be initialized when it is declared. later assigning the value to the const variable will result in an error "Cannot modify the const object".

Hence Option B is correct


Question 6 :

Point out the error in the program.

#include < stdio . h >

int main()
{
    const int k=7;
    int *const q=&k;
    printf("%d", *q);
    return 0;
}


A). Error: RValue required
B). Error: Lvalue required
C). Error: cannot convert from 'const int *' to 'int *const'
D). No error
Answer : Option D

Explanation :

No error. This will produce 7 as output.


Question 7 :

Point out the error in the program.

#include < stdio . h >
#define MAX 128

int main()
{
    char mybuf[] = "India";
    char yourbuf[] = "PARINAM";
    char const *ptr = mybuf;
    *ptr = 'a';
    ptr = yourbuf;
    return 0;
}


A). Error: cannot convert ptr const value
B). Error: unknown pointer conversion
C). No error
D). None of above
Answer : Option A

Explanation :

Step 1 char mybuf[] = "India"; The variable mybuff is declared as an array of characters and initialized with string "India".
Step 2: char yourbuf[] = "PARINAM"; The variable yourbuf is declared as an array of characters and initialized with string "PARINAM".
Step 3: char const *ptr = mybuf; Here, ptr is a constant pointer, which points at a char.
The value at which ptr it points is a constant; it will be an error to modify the pointed character; There will not be any error to modify the pointer itself.
Step 4: *ptr = 'a'; Here, we are changing the value of ptr, this will result in the error "cannot modify a const object".


Question 8 :

Point out the error in the program.

#include < stdio . h >
const char *fun();

int main()
{
    *fun() = 'A';
    return 0;
}
const char *fun()
{
    return "Hello";
}


A). Error: RValue required
B). Error: Lvalue required
C). Error: fun() returns a pointer const character which cannot be modified
D). No error
Answer : Option C