【发布时间】:2018-03-15 16:49:42
【问题描述】:
我无法将字符串理解为指针。显然,字符串被理解为指向字符串首地址的指针。所以使用“&”运算符我应该收到字符串第一个字符的地址。这是一个小例子:
#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]) 时,效果很好。但我不明白为什么。如果没有强制转换,显然“&”运算符给出了要打印的字符串的起始地址。使用强制转换它分别给出每个字符的地址。
也许某人。可以向我解释这一点 - 我将非常感激!
【问题讨论】:
标签: c++ string pointers memory-management memory-address