| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 888 人关注过本帖
标题:很小的问题,大家帮忙看看
只看楼主 加入收藏
xishui777
Rank: 2
等 级:论坛游民
帖 子:53
专家分:94
注 册:2010-8-17
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:10 
很小的问题,大家帮忙看看
#include<iostream>
using namespace std;
int main()
{
    int a=5;
    float b=3.1;
    double c=3.141592;
    char e='k';
    cout<<"a= "<<a<<"   地址: "<<&a<<endl;
    cout<<"b= "<<b<<"   地址: "<<&b<<endl;
    cout<<"c= "<<c<<"   地址: "<<&c<<endl;
    cout<<"e= "<<e<<"   地址: "<<&e<<endl;
    system("pause");
    return 0;
}
为什么e的地址是乱码。我用的vc6.0
int j=5,p;
p=(++j)+(++j)+(++j);
p=6+7+8=21才对呀。
为什么运行结果确等于22?
搜索更多相关主题的帖子: double 
2011-01-05 21:35
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:0 
我运行了一下,确实和楼主说的情况一样。我也不知道是什么原因,真是奇怪了。

   唯实惟新 至诚致志
2011-01-05 23:15
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:10 
因为 e 的地址是 char *,重载去输出字符串了。但那个地方除了第一个是 k 以外,其它的都是乱码。
其它的指针因为没有特别的重载,用的都是类似 void * 的处理办法。
2011-01-05 23:25
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
第二个问题没有什么特别的意义,那个結果和编译器有关。
2011-01-05 23:25
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:0 
#include<iostream>
#include<stdio.h>

using namespace std;
int main()
{
    int a=5;
    float b=3.1;
    double c=3.141592;
    char e='k';
    char *ee=&e;
    printf("e= %c   地址:%X\n",e,&e);
    cout<<"a= "<<a<<"   地址: "<<&a<<endl;
    cout<<"b= "<<b<<"   地址: "<<&b<<endl;
    cout<<"c= "<<c<<"   地址: "<<&c<<endl;

    system("pause");
    return 0;
}

小代码,大智慧
2011-01-05 23:36
bjl2010
Rank: 2
等 级:论坛游民
帖 子:23
专家分:27
注 册:2010-12-13
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
怎么会是乱码?
2011-01-06 09:05
Young22
Rank: 1
等 级:新手上路
帖 子:2
专家分:7
注 册:2008-11-9
收藏
得分:0 
ls没加&符吧
2011-01-06 11:10
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:709
专家分:2063
注 册:2010-11-11
收藏
得分:0 
回复 3楼 pangding
稍稍说明一下,e='k','k'是一个字符常量,而不是字符串,这两个之间有很大的区别。cout被重载可以显示多种类型的值,在这个地方,e其本质是一个地址,即存储'k'常量的地址。
语句
    char e = 'abc';
    cout << e;
在这里cout接受的参数类型时char *的,也就是说传递的是字符串'abc'的地址。
语句
    char e = 'k';
    cout << e;
在这里,同样,cout接受的参数类型时char *的,即字符常量'k'的地址。
如果显示字符串或字符常量的地址,应该在e前面加上(int *)
2011-01-07 02:20
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
习惯上如果要输出地址,一般是转成 void *。

我想你说的这些楼主都懂,他只是一时没想明白为什么。
2011-01-08 01:07
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:709
专家分:2063
注 册:2010-11-11
收藏
得分:0 
回复 9楼 pangding
既然都已经懂了,怎么还一时不明白呢?楼主若是知道,那也只能是只知其然而不知其所以然。这就是对最基本知识没有吃透的结果,也是现在很多学习编写程序的人的通病:急于求成,但却欲速则不达。
2011-01-08 01:31
快速回复:很小的问题,大家帮忙看看
数据加载中...
 
   



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

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