Let us have the variable
char *s
;
I know if it's declared in global scope, its value should be 0;
If it's declared in local scope, its value is undefined (it may be 0 though).
I've got a question in test which sounds like this 'What will be the value of the pointer defined as
char* s
a) null
b) empty string
c) undefined
I'm really confused what answer I should choose, because if it's declared in global scope, well, the value would be null (i guess). If it's declared in local scope, undefined (though when I tried it's zero), and when I try to cout
it, nothing is printed (no segmentation fault, why?), that means it's an empty string (or is cout
that awesome?).
The question you quoted is most likely written by a person who didn't fully understand the issue. As you correctly noted, the initial value of such pointer greatly depends on the context: where and how it is defined (local, static, aggregate member?). So, the correct answer should be an expanded one that explains these dependencies. It is weird to attempt to answer such question in a "multiple choice, only one of many" fashion.
Of course, in very general and most formally pedantic sense, the correct answer is the one that says "undefined", since in general case, not knowing where it is defined, we have to "assume the worst". But I doubt the author of the test realized that.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With