首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

字符串输出的有关问题

2012-03-30 
字符串输出的问题!char *smy namefor(int i3i7i++){cout*(s+i)}输出:namefor(int i3i7i++)

字符串输出的问题!
char *s="my name";
for(int i=3;i<7;i++)
{
  cout<<*(s+i);
}
输出:name
for(int i=3;i<7;i++)
{
  cout<<s+i<<" ";
}
就输出name ame me e
那么数组
int* a;
int aa[4]={0,1,2,3};
a=aa;
cout<<a;
怎么就输出地址********
而不是0,1,2,3呢? 小弟新手 谢谢!

[解决办法]
aa是数组的首地址,即aa[0]的地址,赋值给a的自然就是aa[0]的地址了
而s是字符串指针
这与<<运算符的重载有关,你可以看一下相关内容
[解决办法]
cout<< a[0] << a[1] << a[2] << a[3]...
用一个循环打印更好。
[解决办法]
你试一下这个程序,应该行了:
#include <iostream>
using namespace std;
int main()
{int i;
int *a;
int aa[4]={0,1,2,3};
a=aa;for(i=0;i<=3;i++)
cout<<*(a+i)<<' ';
cout<<endl;
return 0;
}
[解决办法]
我觉得如果是字符串就可以用你的那种输出方法
[解决办法]
char *s="my name";
for(int i=3;i<7;i++)
{
cout<<*(s+i);
}
中cout<<*(s+i);就相当于 cout<<s[i];
i的初始值为3,末值为6所以就将字符串"my name"中第4到第6个字符打印出来,得到“name”

//////////////////////////////////////////////////////////////////////

for(int i=3;i<7;i++)
{
cout<<s+i<<" ";
}
cout<< 后如果是一字符的地址的话,就会打印出以这个地址为首地址的字符串
cout<<s+i;就是输出首地址为s+i的一个字符串,i的初值为3,s为字符串"my name"的首地址,所以
s+i就是第4个字符的地址,也就是字符n的地址,字符n的地址就是字符串name的首地址,所以首先打印
出来的是字符串name,然后i加1,此时,地址就定位到了字符a上,字符a的地址,就是字符串ame的首地址
所以,输出的第二个字符串是ame,同理,输出me,e

//////////////////////////////////////////////////////////////////////////

int* a;
int aa[4]={0,1,2,3};
a=aa;
cout<<a;

此处a是整形数组aa[4]的首地址,cout<<a;就会输出这个地址,应该是0x后面有一串数字的形式


如果要输出1 2 3 4的话,应该这样写

char *a;
char aa[5]={'1','2','3','4','\0'};
// 注意此处不要忘了加字符串结束标记'\0' 如果忘了加,输出的结果就会是 1234后面带一些乱码,
// 因为把4以后的内存中的一些未知的字符也给输出来了,加了结束标记'\0',意思就是输出到字符4
// 就结束了,后面的就不再输出了
a=aa;
cout<<a;




或者写成这样也行

char *a;
char aa[5]="1234";
a=aa;
cout<<a;








热点排行