注册 登录
编程论坛 C++教室

请教一个字符指针的问题

allen802 发布于 2009-10-15 09:46, 1043 次点击
char *p="I love China!";
cout << p << endl;

输出的p为何不是地址,而是"I love China!"?
10 回复
#2
onepc2009-10-15 09:52
cout是会把p指向的地址的地方输出内容。直至遇到空字符。
#3
allen8022009-10-15 12:51
什么情况下指针会是这样呢?为什么别的都是输出地址?难道字符指针这里是硬性规定?
#4
哥特复兴2009-10-15 14:28
楼主需要注意一下,字符串和数子是有区别的,每一个字符都会占用一个内存的地址,你的这种写法就是完全错误的.
我用了包含字符串的头文件,如果不用的话,实现起来比较麻烦,需要用到for循环,把每个字符的地址输出;
代码如下:
#include<iostream>
#include<string>      //字符串头件
using namespace std;
void main()
{
    string p="I love China!";  //定义的其实是一个字符串函数
    string *c;
    c=&p;
    cout<<c;
}
单纯的数子可以用你的那种写法,注意:数子和字符是有本质区别的;
#include<iostream>
using namespace std;
void main()
{
    int p=8;
    int *c;
    c=&p;
    cout<<c<<endl;;
}
#5
哥特复兴2009-10-15 14:40
  c++编程语言是逻辑性很强也是要求很严谨的一门编程语言,我们要用它实现每一项功能的话都需要必要多的代码,否则就会出错,甚至出现我们意想不到的结果,造成我们对某种技术的误解,所以希望楼主以后写代码的时候尽量写的完整,这是一种很好的习惯.
  我也是初学者,希望大家一起进步......
  "魔鬼训练中……"
#6
guang1420302009-10-15 17:53
好受益!!!
#7
blueskiner2009-10-17 08:56
想要知道P的地址,你可以用取地址运算符“&”, 如果你想知道指针所指的的字符可以cout<<*p<<endl;,如果你想输出指针所指的const char (即"I Lova China")字符串,可以cout<<p<<endl;楼主你对指针不太了解
#8
lintaoyn2009-10-17 15:45
int *c;  
c=&p;
#9
lintaoyn2009-10-17 15:46
int *c = &p;//这样写不会更好么?
 
#10
loookc2009-10-20 13:17
受益
#11
songxj322009-10-20 19:33
受益
1