Before I use ctime_r
,I defined char* t
instead of char* buf[32]
by mistake.I thought char* t
is point to NULL,and there will be a error after using ctime_r
,like stycpy(t,"hello");
.But I was surprised to find that char* t
is not point to NULL as usual.Why?
Asked
Active
Viewed 33 times
0

Sourav Ghosh
- 133,132
- 16
- 183
- 261

jone sterling
- 27
- 5
-
2Does this answer your question? [What happens to a declared, uninitialized variable in C? Does it have a value?](https://stackoverflow.com/questions/1597405/what-happens-to-a-declared-uninitialized-variable-in-c-does-it-have-a-value) – Elijan9 Jun 15 '20 at 08:41
1 Answers
1
I thought
char* t
is point toNULL
,
No, that's not true. There is no universal rule for initialization, it depends on the storage duration of the object.
In your case, most likely, the variable is a local scope one and has automatic storage duration, hence, unless initialized explicitly, the initial content is indeterminate.
Quoting C11
, chapter 6.7.9/P10
If an object that has automatic storage duration is not initialized explicitly, its value is indeterminate

Sourav Ghosh
- 133,132
- 16
- 183
- 261
-
Oh,I asked a silly question A variable defined within the function is automatic,I knew that a long time ago.Maybe I use 'strcpy' recently,the char* t is often point to 'NULL' which misled and confused me .Thank you for your professional answer to a stupid question!Sorry to trouble you! – jone sterling Jun 15 '20 at 08:54