ningago @ 2022-07-13 15:24:05
求教,某神的博客:
struct CP
{
...
}f[Maxn<<1],p[Maxn<<1];
void fft(CP *f,bool flag)
{
...
下面的 *f 和上面的 f[MAXN] 重复为什么不会产生歧义并正常运行?
by 小粉兔 @ 2022-07-13 15:25:09
内层(作用域)的变量会隐藏外层的变量
by mazihang2022 @ 2022-07-13 15:25:39
因为作用域不同吧
by ningago @ 2022-07-13 15:25:39
orz
by 小粉兔 @ 2022-07-13 15:25:42
使用 -Wshadow 这个编译器选项可以开启变量隐藏的警告
by NightStriker @ 2022-07-13 15:25:47
兔队楼下!
by ningago @ 2022-07-13 15:26:41
感谢
by Lehe @ 2022-07-13 15:28:46
@ljp 楼你【】下
by LX_zxy @ 2022-07-13 15:31:12
类似于就近原则。就像你在外面有一个变量x,但是如果在函数内又有一个x,函数并不会管外面的x,而是函数内的x。
#include<bits/stdc++.h>
using namespace std;
int x=0;
void find(int x){
cout<<x<<endl;
}
int main(){
find(1);
return 0;
}
就像这个代码,他并不会输出0,而是输出1
by ningago @ 2022-07-13 15:32:36
@LX_zxy %%%
by __er @ 2022-07-13 15:35:34
@ningago 它是局部变量,出栈失效,你试试全局变量就会报错