gpt4 book ai didi

c++ - 如何在C++中增加指针的指针值

转载 作者:搜寻专家 更新时间:2023-10-31 00:11:17 24 4
gpt4 key购买 nike

我一直在阅读指针在 C++ 中的工作原理,我试图稍微弄乱它,但程序停止工作了。

#include <iostream>
using namespace std;

int main ()
{
char a[] = "Hello";
char * b = a;
char ** c = &b;

cout << *(b+1) << endl;
//cout << **(c+2) << endl;
return 0;
}

如果注释行未被注释,程序将停止工作,错误代码:0xC0000005。我做错了什么还是这是某种错误?

最佳答案

这里:

char a[] = "Hello";
char * b = a;

您正在利用数组到指针的衰减。所以现在 b 指向 a[0]。也就是说,b 保存着 a[0]

的地址

然后

char ** c = &b;

c 现在指向 b地址,它本身就是一个指针。 c 保存了 b 的地址,它保存了 a 的地址(明白为什么现在人们讨厌指针了吗?)

如果你想从c访问a[0],你首先需要取消引用它:

*c

它给出 b,然后我们需要取消引用 that 以返回到 a[0]:

*(*c)

如果你想使用指针算法访问a[1],你想递增b,所以:

*c+1

现在我们有了 a[1] 的地址,如果我们想打印它,我们需要再次取消引用:

*(*c+1)

当你说:

**(c+2)

c 保存了 b 的地址,而不是 a,因此对其递增会导致未定义的行为。

关于c++ - 如何在C++中增加指针的指针值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34515367/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com