【问题标题】:Can variable name be same as Function name in C++?变量名可以与 C++ 中的函数名相同吗?
【发布时间】:2019-09-29 10:34:31
【问题描述】:

在下面的代码中,lis 是一个数组以及一个具有相同返回类型(int)的函数名,我没有收到任何错误,谁能解释后台发生了什么?为什么编译器不显示错误?

int lis( int arr[], int n )  
{  

int lis[n]; 
lis[0] = 1;    
for (int i = 1; i < n; i++ )  
{ 
    lis[i] = 1; 
    for (int j = 0; j < i; j++ )   
        if ( arr[i] > arr[j] && lis[i] < lis[j] + 1)  
            lis[i] = lis[j] + 1;  
} 

【问题讨论】:

    标签: c++ operator-overloading naming-conventions shadowing


    【解决方案1】:

    与变量名无关! 您不能在函数中动态定义列表。

    您必须像这样编写代码:

    int lis(int arr[], int n)
    {
        int *lis = new int[n];
        lis[0] = 1;
        for (int i = 1; i < n; i++)
        {
            lis[i] = 1;
            for (int j = 0; j < i; j++)
                if (arr[i] > arr[j] && lis[i] < lis[j] + 1)
                    lis[i] = lis[j] + 1;
        }
        delete[] lis;
    
        return 0;
    }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-20
    • 2018-04-03
    • 2012-11-02
    相关资源
    最近更新 更多