| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 731 人关注过本帖
标题:大家帮我看个简单地问题!!
只看楼主 加入收藏
xuqing520
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-8-31
收藏
 问题点数:0 回复次数:7 
大家帮我看个简单地问题!!
对一个整型数据和字符型数据用指针进行简单地操作,程序如下:
#include<iostream.h>
void main()
{
    int a=100;
    char c='a';
    int *pa;
    char *pc;
    pa=&a;
    pc=&c;
    cout<<"pa="<<pa<<", *pa="<<*pa<<endl;
    cout<<"pc="<<pc<<", *pc="<<*pc<<endl;
}

运行结果:
pa=0x0012FF7c,*pa=100
pc=a烫靇,*pa=a
请问各位大侠,为什么pc不能输出a的正确地址呢?
谢谢!
2008-11-18 23:00
傻朋
Rank: 1
等 级:新手上路
帖 子:21
专家分:3
注 册:2008-2-28
收藏
得分:0 
晕 怎么还没人回答啊 我昨天看了这个问题  也是感到困惑
 所以我也好想知道  今天来看 还是没人回答 晕哦
2008-11-19 10:15
dreamstring
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-11-11
收藏
得分:0 
你这个是不是字库的问题啊?~~我觉得返回的应该是正确的地址,但是这个地址显示出来的时候发生了不正常,是不是字库的问题~~
2008-11-19 10:36
xuqing520
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-8-31
收藏
得分:0 
应该不是吧,我用printf()函数输入的时候是正常的!我在想是不是系统将pc当字符串处理了!但是也不知道到底是怎么回事!
2008-11-20 23:01
nkorange
Rank: 2
等 级:论坛游民
帖 子:37
专家分:22
注 册:2008-10-23
收藏
得分:0 
应该和cout<<这个重载运算符有关系
2008-11-20 23:45
mkterry
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2008-10-30
收藏
得分:0 
#include<iostream.h>
void main()
{
    int a=100;
    char c='a';
    int *pa;
    char *pc;
    pa=&a;
    pc=&c;
    cout<<"pa="<<(void*)pa<<", *pa="<<*pa<<endl;
    cout<<"pc="<<(void*)pc<<", *pc="<<*pc<<endl;
}
2008-11-21 09:53
沼泽
Rank: 4
等 级:业余侠客
威 望:8
帖 子:291
专家分:228
注 册:2008-9-15
收藏
得分:0 
此处的cout<<"pc="<<pc<<", 在输出的时候,编译器是将pc看做是字符串输出,遇到'\0'才结束,由于后面没有结束符所以是a烫靇,a+乱码,如果加上pc[1]='\0';输出就会是a;
cout<<"*pc="<<*pc<<", 指向的是第一个地址的值,所以是a
所以要输出地址可以cout<<"pc="<<(int *)pc;

[[it] 本帖最后由 沼泽 于 2008-11-21 10:06 编辑 [/it]]
2008-11-21 10:03
zhangyafei4353
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2008-11-28
收藏
得分:0 
版主强!一语中的,我运行了一下:
#include<iostream.h>
void main()
{
    int a=100;
    char m_choice;
    char c[2]={'a','\0'};
    int *pa;
    char *pc;
    pa=&a;
    pc=&c[0];
    cout<<"pa="<<pa<<", *pa="<<*pa<<endl;
    cout<<"pc="<<(int *)pc<<", *pc="<<*pc<<endl;
    while(m_choice!='Q')
    {        
        cout<<"退出请选择'Q':"; cin>>m_choice;
    }
}
结果:pa=0x0012FF7C,*pa=100
      pc=0x0012FF74,*pc=a
实际int,char都是字节类型:
#include<iostream.h>
void main()
{
    int a=100;
    char m_choice;
    int c='a';
    int *pa;
    int *pc;
    pa=&a;
    pc=&c;
    cout<<"pa="<<pa<<", *pa="<<*pa<<endl;
    cout<<"pc="<<pc<<", *pc="<<(char)*pc<<endl;
    while(m_choice!='Q')
    {        
        cout<<"退出请选择'Q':"; cin>>m_choice;
    }
}
运行结果一样。。。
问一下高手,VC6.0 MFC程序中可以定义BYTE a;
在上面为什么不能这样定义?需要什么头文件?
2008-11-30 10:33
快速回复:大家帮我看个简单地问题!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023183 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved