我试图了解悬空指针在 C++ 中是如何工作的。
int* get_int_ptr()
{
int i=10;
int* ptr;
ptr = &i;
return ptr;
}
char* get_char_ptr()
{
char str[10];
strcpy(str,"Hello!");
return(str);
}
int main()
{
cout << *get_int_ptr() << endl;
cout << get_char_ptr() << endl;
return 0;
}
此代码的输出是 -
警告:
prog.cpp: In function 'char* get_char_ptr()':
prog.cpp:16:9: warning: address of local variable 'str' returned [-Wreturn-local-addr]
char str[10];
^
输出:
10
有人可以解释为什么即使返回的指针指向的指针超出范围,函数i
中的值也会打印出来。main()
i
以及为什么str
没有打印出来的值。
Isint*
和char*
在功能范围方面被分开处理。
此外,在smart_pointers
此处使用是否会以任何形式提供帮助?