小编TFK*_*TFK的帖子

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
查看次数

左联接之前的SQL过滤器LEFT TABLE

我已经阅读了SO的许多文章,并且了解了where子句和on子句中过滤之间的区别。但是,大多数示例都是在RIGHT表上进行过滤的(使用左联接时)。如果我有如下查询:

select * from tableA A left join tableB B on A.ID = B.ID and A.ID = 20
Run Code Online (Sandbox Code Playgroud)

返回值不是我期望的。我以为它首先过滤左表并仅获取ID = 20的行,然后对tableB进行左联接。

当然,这在技术上应与执行以下操作相同:

select * from tableA A left join table B on A.ID = B.ID where A.ID = 20
Run Code Online (Sandbox Code Playgroud)

但是我认为,如果可以在进行联接之前过滤表,性能会更好。有人可以启发我如何处理此SQL,并帮助我彻底理解它。

sql oracle left-join

2
推荐指数
1
解决办法
5637
查看次数

标签 统计

c++ ×1

left-join ×1

oracle ×1

pass-by-reference ×1

reference ×1

sql ×1