Lan*_*dau 3 c++ memory storage pointers
我正在玩指针,以更好地理解这个概念,并想问
为什么我得到空指针作为第二个函数的返回?
以及为什么不可能得到地址0x7fff15504044.当我在函数内部使用它时,正在发生什么以及内部存储器中存储的整数5是什么?
#include <iostream>
using namespace std;
int* return_adress(int* input){ return input; }
int* return_adress_from_input(int input){ return &input; }
int main(){
int k = 3;
cout << return_adress(&k) << endl;
cout << return_adress_from_input(k) << endl;
}
Run Code Online (Sandbox Code Playgroud)
输出:
0x7fff15504044
0
With int* return_adress_from_input(int input),input是k调用者的值副本.它们是两个不同的变量因此具有不同的地址.
input 一旦达到函数的右括号,概念上就会超出范围.
然后指针指向&input您不再拥有的内存,并且在C++ 14之前未定义读取指针值(更不用说解除引用它)的行为,以及从C++ 14 定义的实现.
| 归档时间: |
|
| 查看次数: |
99 次 |
| 最近记录: |