《易学C++》里关于指针的问题

cnpws 2009-12-24 02:54:05
#include "iostream.h"
int main()
{
int i=3;
int *iptr=&i;
int **iptrptr=&iptr;//iptr 也是变量,也能够获取它的地址
cout <<"Address of Var i=" <<iptr <<endl;//输出iptr 存储的内容,即i 在内存中的地址
cout <<"Data of Var i=" <<*iptr <<endl;//输出iptr 所指向的变量
cout <<"Address of Pointer iptr=" <<iptrptr <<endl;//输出iptr 在内存中的地址
cout <<"Address of Var i=" <<*iptrptr <<endl;//输出iptrptr 所指向的变量,即iptr
*iptr=2+*iptr;//*iptr 可以作左值
cout <<"Data of Var i=" <<*iptr <<endl;
return 0;
}

、如果将程序中的所有整型变量换成字符型变量(把对应的变量数据也换成字符),
则执行后会有什么奇怪的现象?请根据第七章的知识,猜想产生这个奇怪现象的原因。



不理解为什么。。。
...全文
96 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hlyces 2009-12-24
  • 打赏
  • 举报
回复
C:\WINDOWS\system32\cmd.exe /c main
Address of Var i=4"
Data of Var i=
Address of Pointer iptr=0x22ff34
Address of Var i=4"
Data of Var i=
Hit any key to close this window...
=========================================
为什么会这样??
char i=3;//上面的显示无问题,此处你换成'a'就看的见啦,Data of Var i=a
char * iptr=&i;//系统默认认为iptr是char类型
char **iptrptr=&iptr;//系统默认iptrptr为为char *类型,也就是指针=int
hlyces 2009-12-24
  • 打赏
  • 举报
回复
指针自动被识别为你所定义的指向的类型。
hlyces 2009-12-24
  • 打赏
  • 举报
回复
在地址输出时做个类型转换就OK,可显示正常的地址啦
healer_kx 2009-12-24
  • 打赏
  • 举报
回复
这种书太多了。。。还有好多呢,像什么《面向对象的艺你个术》。靠。。。
hlyces 2009-12-24
  • 打赏
  • 举报
回复
C:\WINDOWS\system32\cmd.exe /c main
Address of Var i=4"
Data of Var i=
Address of Pointer iptr=0x22ff34
Address of Var i=4"
Data of Var i=
Hit any key to close this window...
=========================================
并不出错,只是显示的方式不同啦
ypb362148418 2009-12-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 taodm 的回复:]
换本好点的教材吧。还有好点的编译器,珍惜生命,远离VC6。
[/Quote]

教材换本吧,大学教材就可以了
adventurelw 2009-12-24
  • 打赏
  • 举报
回复
char *默认为字符串,应该以‘\0’结尾,如果没有合适的结尾标志,则情况难以预料。
taodm 2009-12-24
  • 打赏
  • 举报
回复
换本好点的教材吧。还有好点的编译器,珍惜生命,远离VC6。

64,663

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧