char *someFun1()
{
char temp[ ] = “string";
return temp;
}
char *someFun2()
{
char temp[ ] = {‘s’, ‘t’,’r’,’i’,’n’,’g’};
return temp;
}
int main()
{
puts(someFun1());
puts(someFun2());
}
Answers were Sorted based on User's Feedback
Answer / susie
Answer :
Garbage values.
Explanation:
Both the functions suffer from the problem of dangling
pointers. In someFun1() temp is a character array and so the
space for it is allocated in heap and is initialized with
character string “string”. This is created dynamically as
the function is called, so is also deleted dynamically on
exiting the function so the string data is not available in
the calling function main() leading to print some garbage
values. The function someFun2() also suffers from the same
problem but the problem can be easily identified in this case.
| Is This Answer Correct ? | 11 Yes | 0 No |
Variables are in function calls, hence on heap space. Variable address is being returned by function and when function returns the allocated space is freed.
Now accessing returned address will result in : segmentation fault.
As address no longer allocated to function, results in invalid address accessed by process.
As variable address does not exist ( hence variable address also , as heap is freed).
| Is This Answer Correct ? | 0 Yes | 0 No |
main() { int i=1; while (i<=5) { printf("%d",i); if (i>2) goto here; i++; } } fun() { here: printf("PP"); }
void main() { char a[]="12345\0"; int i=strlen(a); printf("here in 3 %d\n",++i); }
prog. to produce 1 2 3 4 5 6 7 8 9 10
char *someFun1() { char temp[ ] = “string"; return temp; } char *someFun2() { char temp[ ] = {‘s’, ‘t’,’r’,’i’,’n’,’g’}; return temp; } int main() { puts(someFun1()); puts(someFun2()); }
main() { char *p = "hello world"; p[0] = 'H'; printf("%s", p); } a. Runtime error. b. “Hello world” c. Compile error d. “hello world”
Is it possible to type a name in command line without ant quotes?
find A^B using Recursive function
Write a C program that defines a 2-dimentional integer array called A [50][50]. Then the elements of this array should randomly be initialized either to 1 or 0. The program should then print out all the elements in the diagonal (i.e. a[0][0], a[1][1],a[2][2], a[3][3], ……..a[49][49]). Finally, print out how many zeros and ones in the diagonal.
programming in c lanugaue programm will errror error with two header file one as stdio.h and other one is conio.h
write a c-program to display the time using FOR loop
What are the files which are automatically opened when a C file is executed?
main() { int i=5; printf("%d%d%d%d%d%d",i++,i--,++i,--i,i); }