gpt4 book ai didi

c++:指针和地址

转载 作者:行者123 更新时间:2023-11-30 03:52:25 25 4
gpt4 key购买 nike

#include <iostream>

using namespace std;

void test_func(char *data,int length)
{
cout<<"data:"<<data<<endl;
cout<<"length:"<<length<<endl;

void *addr=data;
cout<<"*addr:"<<addr<<endl;
cout<<"Address of data:"<<&data<<endl;
cout<<"data again:"<<*(&data)<<endl;
}

int main()
{
char msg[]="Hello world!";
test_func(msg,6);

return 0;
}

我正在尝试一些其他程序,我遇到了 void *addr=data。所以我试图通过为它编写一个单独的程序来理解它。在这里我无法理解 addr 中存储的值是什么。我得到以下程序的输出:

data:Hello world!
length:6
*addr:0x794e0553d310
Address of data:0x794e0553d2e8
data again:Hello world!

如有任何帮助,我们将不胜感激。提前致谢。

最佳答案

运算符(operator) <<cout 重载, 所以如果你传递 char*它打印内容(即使 char* 是一个指针)。

但是,如果您传递一个空指针(在您的示例中为 addr),它将打印地址本身。所以addr是消息第一个元素的地址。

另一方面,&data是指向指针的指针,所以 cout打印 data 的地址(data 是指向您的消息的指针)。

关于c++:指针和地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30705614/

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