gpt4 book ai didi

c++ - 将字符串理解为 C++ 中的指针

转载 作者:太空狗 更新时间:2023-10-29 23:38:59 24 4
gpt4 key购买 nike

我很难将字符串理解为指针。显然,字符串被理解为指向字符串首地址的指针。所以使用“&”运算符我应该接收到字符串第一个字符的地址。这是一个小例子:

#include "stdafx.h"
#include <iostream>
using namespace std;

int main(){
char text[101];
int length;
cout << "Enter a word: ";
cin >> text;
length = strlen(text);
for (int i = 0; i <= length; i++) {
cout << " " << &text[i];
}
return 0;
}

当输入诸如“Hello”之类的单词时,输出为:“Hello ello llo lo o”。相反,我希望收到“Hello”每个字符的地址。当我使用转换 long(&text[i]) 时,效果很好。但我不明白为什么。如果没有转换,显然“&”运算符给出了要打印的字符串的起始地址。它使用强制转换分别给出每个字符的地址。也许某人。可以向我解释一下 - 我真的很感激!

最佳答案

&text[i]相当于text + i这会沿着 char[] 移动指针按 i 排列使用指针算法放置。效果是启动cout在第 (i) 个字符上,重载 <<const char*叫。输出从起点到 NUL 终止符的所有字符。

text[i]然而是char类型,以及 << 的重载到 char叫做。输出单个字符。

在C++中,如果你想要一个字符串,那么使用std::string反而。你仍然可以写 cin >> text;如果textstd::string类型!你的代码也不容易溢出你的 char缓冲区。

关于c++ - 将字符串理解为 C++ 中的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46562387/

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