What will be the output of the following C code (run without any command line arguments)?
#include <stdio.h>
int main(int argc, char *argv[])
{
while (*argv++ != NULL)
printf("%s\n", *argv);
return 0;
}
#include <stdio.h>
int main(int argc, char *argv[])
{
while (*argv++ != NULL)
printf("%s\n", *argv);
return 0;
}
A. Segmentation fault/code crash
B. Executable file name
C. Depends on the platform
D. Depends on the compiler
Answer: Option A
Solution(By Examveda Team)
When the program is executed without any command line arguments, theargv
array will contain only one element, which is the name of the executable file itself. In the while
loop, *argv++
will first dereference argv
, which points to the string containing the name of the executable file, and then increment argv
to point to the next memory location, which would be NULL
as there are no more command line arguments.However, the loop does not check for the
NULL
pointer before dereferencing argv
. Therefore, when argv
is dereferenced after reaching the end of the argv
array (i.e., when it points to NULL
), it will cause a segmentation fault or code crash because it is attempting to access memory that is not valid.Hence, the correct answer is Option A: Segmentation fault/code crash.
Join The Discussion
Comments ( 1 )
Related Questions on Pointer
In C, what is a pointer primarily used for?
A. Decision making
B. Code organization
C. Variable declaration
D. Storing values
In C, how do you declare a pointer variable that can store the address of an integer?
A. int *ptr;
B. ptr int;
C. int ptr;
D. ptr *int;
What is the purpose of the '->' operator in C when used with pointers?
A. Arithmetic operation
B. Indirection operator
C. Member access operator
D. Bitwise operation
can you explane me