小编Sta*_*ght的帖子

为什么 A[i][j] 和 *((int*)A + i * n + j) 给出不同的输出?

我正在学习C++指针。我的老师提到这*((int*)A + i * n + j)是线性化符号的另一种方法A[i][j]。我尝试在这个 main 函数中使用 2x4 2D 数组来测试它。

int main()
{
    int** A = new int* [100];
    for (int i = 0; i < 2; ++i)
    {
        A[i] = new int[100];
    }

    //assign value
    for (int i = 0; i < 2; ++i)
        for (int j = 0; j < 4; ++j)
            cin >> *((int*)A + i * 4 + j);
            //cin >> A[i][j]; //if I do this instead of the line …
Run Code Online (Sandbox Code Playgroud)

c++ pointers

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

为什么这个布尔函数返回 true (74) 而程序显示 74?

我只是在摆弄这个函数,不知何故回文返回 74。我正在使用 Visual studio 2022。它是否应该不返回任何内容并捕获编译器错误,因为在下面的情况下永远不会返回 false?

bool palindromes(string str) {
    if (str.length() == 0 || str.length() == 1) return true;

    if (str[0] == str[str.length() - 1])
        palindromes(str.substr(1, str.length() - 2));
    else
        return false;
}


int main()
{
    cout << palindromes("lol");
} 
Run Code Online (Sandbox Code Playgroud)

c++

0
推荐指数
1
解决办法
93
查看次数

标签 统计

c++ ×2

pointers ×1