请教,菜鸟提问

ivanwang 2004-03-26 01:29:41
小弟刚开始学C++,最近遇到指针一问题。
看书(《21天学通C++》第三版)的时候,书上面说“一定要对指针初始化,于是有下面的小东东:
#include <iostream.h>

void main()
{
int *pAge=0;
int x=23;
*pAge=x;
}
编译的时候没有问题,但是如果运行的话就出错了。不明白为什么。
如果是初始化pAge错误的话,这样子:
#include <iostream.h>

void main()
{
int *pAge=0;

}

就没有错误,疑惑ing

...全文
22 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ivanwang 2004-03-26
  • 打赏
  • 举报
回复
奇怪,怎么结不来贴啊?一结帖就说“该网页无法显示”~~~~
ivanwang 2004-03-26
  • 打赏
  • 举报
回复
明白了,多谢多谢。
junnyfeng 2004-03-26
  • 打赏
  • 举报
回复
以上的p就是pAge,写漏了

好了,你不睡我睡
junnyfeng 2004-03-26
  • 打赏
  • 举报
回复
呵呵,你看了那本书第几天了?
首先向你道个歉,刚才我看错了!

指针所谓的初始化就是 如 int *pAge=NULL (也就是0) 令它不指向任何对象

而*pAge=x是把x赋给p的对象,但p的对象没有指定,你说会如何呢?

而pAge=&x,就是令pAge指向了x的地址,就是给它一个对象

cout<<*pAge<<endl; 就是把这个对象打印出来
ivanwang 2004-03-26
  • 打赏
  • 举报
回复
确实是VC6.0,编译的时候通过了,也没有“未初始化”的警告,就是不能执行,一执行就跳那个“test1.exe 遇到问题需要关闭。我们对此引起的不便表示抱歉”的框框。
既然*是间接引用,为什么“*pAge=50”就可以,而“*pAge=x”就错误呢?
完了又写了一个试试:
#include <iostream.h>

void main()
{
int a=20;
int *pAge=&a;
int x=23;
*pAge=x;
cout<<*pAge<<endl;
}

中间也有“*pAge=x”啊,但是就是对了,结果是“23”,说明就是原先的“int* pAge=0”的错误啊。
拙见,还请指教,分可以再加哈,今天不弄明白实在是不爽
junnyfeng 2004-03-26
  • 打赏
  • 举报
回复
不知你用什么编译器
如果用VC的话,肯定会在*pAge=x;这告诉你指针没有初始化
错的不是int *pAge=0;

*pAge=x; --》 pAge=&x;
ivanwang 2004-03-26
  • 打赏
  • 举报
回复
不明白啊,什么意思?pAge不是已经初始化了么?(int *pAge=0;)
能不能说的详细些?
junnyfeng 2004-03-26
  • 打赏
  • 举报
回复
21天。。。的书是最烂的!

你上面的例子就是没有初始化的

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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