首页新闻找找看学习计划

字符串如何获取地址

0
悬赏园豆:15 [已解决问题] 解决于 2016-11-24 16:55

#include <iostream>
#include<string>
#include <cstring>
#include<vector>
#include<sstream>
#include<algorithm>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
int main()
{
char *p="fdg";
cout<<*(p+1)<<endl;;//p所指的位置是不变的与p++不同
cout<<*p<<endl;
cout<<p<<endl;
cout<<&p<<endl;//指针所在的地址
cout<<static_cast<const void *>(p)<<endl;//必须要转化成无类型指针,输出的是字符串首地址
string str=p;
cout<<str<<endl;
cout<<&str<<endl;
cout<<&str[0]<<endl;

cout<<static_cast<const void *>(&str[0])<<endl;
}

标红的两句不太懂,求解释

第一句红的为啥会输出字符串?

第二个。我明明是str这个指针指向相同的字符串取得f的地址为啥不一样。

还有想问问通过字符串变量是如何获得字符串的首地址的?

譬如 string s="fdvdf'';

想要通过s 获得fdvdf的首地址为啥cout<<static_cast<const void *>(s)<<endl;这样写就不行。。

邗影的主页 邗影 | 初学一级 | 园豆:73
提问于:2016-09-28 22:16
< >
分享
最佳答案
0

字符串可以看作是字符数组

str是数组的首地址,

str[0]表示数组的首元素

&str[0]是suzuki首元素的地址,其值和str相同,故输出的是字符串

 

 

收获园豆:15
悦光阴 | 老鸟四级 |园豆:2239 | 2016-09-29 09:50
其他回答(1)
0

好像c++里面的string类型大小是固定的,它只是部分存了字符串的地址,其他的结构我也不太了解

RedQueen | 园豆:202 (菜鸟二级) | 2016-12-14 15:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册