gpt4 book ai didi

C++ char数组指针混淆

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

我需要一些帮助来理解指针:

基本要点:

int i = 3;           
cout << i << endl; //prints 3
cout << &i << endl; //prints address of i

int * p = &i;
cout << p << endl; //prints the address p points to
cout << &p << endl; //prints the address of p
cout << *p << endl; //prints the value stored at the address p points to

现在的困惑:

char *buf = "12345"; 
cout << &buf[2] << endl; //prints 345
cout << buf+2 << endl; //prints 345
cout << *buf << endl; //prints 1
cout << *(buf+2) << endl; //prints 3
cout << buf << endl; //prints 12345
cout << &buf << endl; //prints 001CFA6C

如何打印 buf[3] 的地址?

最佳答案

char指针在历史上曾被用作 C 中的字符串的意义上有些特殊。C++ 主要向后兼容 C,因此它支持 C 字符串。所以如果你打印 char指针,而不是打印地址,它打印字符串中的每个字符,直到到达 NULL 字符,就像在 C 中一样。

要打印实际地址,请将指针指向void*。 .

cout << static_cast<void*>(&buf[3]) << endl;

关于C++ char数组指针混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12240653/

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