相关疑难解决方法(0)

内存方面的C++引用如何?

鉴于:

int i = 42;
int j = 43;
int k = 44;
Run Code Online (Sandbox Code Playgroud)

通过查看变量地址,我们知道每个地址占用4个字节(在大多数平台上).

但考虑到:

int i = 42;
int& j = i;
int k = 44;
Run Code Online (Sandbox Code Playgroud)

我们将看到,变量i确实需要4个字节,但j需要没有k再次发生堆栈上的4个字节.

这里发生了什么?看起来j在运行时根本就不存在.那么我作为函数参数收到的引用呢?这必须在堆栈上占用一些空间......

虽然我们在这里 - 为什么我不能定义数组或引用?

int&[] arr = new int&[SIZE]; // compiler error! array of references is illegal
Run Code Online (Sandbox Code Playgroud)

c++ memory-management reference

42
推荐指数
6
解决办法
2万
查看次数

数字是否被认为是python中的对象?

我知道数值在python中是不可变的.我还读过python中的所有东西都是对象.我只是想知道数字类型是否也是python中的对象.因为如果它们是对象,那么变量实际上是引用变量对吧?这是否意味着如果我将一个数字传递给一个函数并在函数内修改它,那么会创建两个带有两个引用的数字对象?python中是否存在原始数据类型的概念?

注意:我也把它当作对象.但是在python导师中可视化说不同:http://www.pythontutor.com/visualize.html#mode=edit

def test(a):
    a+=10
b=100
test(b)
Run Code Online (Sandbox Code Playgroud)

或者它是可视化工具中的缺陷?

python visualization object

8
推荐指数
2
解决办法
3378
查看次数

C++引用占用内存吗

我读过引用只是符号表中存在的变量的别名。考虑下面的代码

int main()
{
    int y = 6;
    int &z = y;
    int k = 43;
    test(2,y,5,78);
    cout << &y << "\n";
    cout << &z << "\n";
    cout << &k << "\n";
}

void test(int a,int & x, int g, int h)
{
    cout << &a << "\n";
    cout << &x << "\n";
    cout << &g << "\n";
    cout << &h << "\n";
}
Run Code Online (Sandbox Code Playgroud)

对于我得到的输出

0039F740
0039F848
0039F748
0039F74C
0039F848
0039F848
0039F830
Run Code Online (Sandbox Code Playgroud)

如果引用不占用堆栈中的内存,为什么内存会被偏移。例如。在功能测试中,局部变量a位于0039F740,而g位于0039F748。g 不应该在 0039F744 吗?

有人可以深入解释一下吗?

c++ reference pass-by-reference

6
推荐指数
1
解决办法
2220
查看次数