这两天coding的时候被一个小问题困惑了一下
#define STR “abcd”
static inline const char *GetStr()
{
return STR;
}
同事做code review的时候说这个可能有问题,第一反应想到的是返回局部变量指针的问题
但又感不太对,这个返回的是程序静态区域里常量的指针,应该是ok的。
百度了一下找的问题困惑的原因了,嘿嘿
char *GetStr()
{
// char str[] = STR; --<这种返回才是我开始担心的局部变量指针的返回
char *str = STR; --<返回的是STR的地址,就是上面说的静态区域中的地址
return str;
}
这个也是指针和数组在应用的区别之一吧。
后来跟同事讨论一下他的担忧。
呵呵,他那是担忧如果程序尝试更改这个指针指向的字符串的数据时会引起程序崩溃。
额,这个也是程序健壮性的一种concern吧,保留他的意见。