C++程序员大挑战之二----令人疑惑的NULL指针!

marrco2005 2007-05-11 08:29:44
请看下面的程序
class foo
{
public:
foo() { m_nVar1 = 100;};
~foo(){};
void Display()
{
printf( " m_nVar2 is %d", m_nVar2 );
}
int m_nVar1;
static int m_nVar2;

};

int foo::m_nVar2 = 500;

int main(int argc, char* argv[])
{

foo *p = NULL;
p->Display();

_getch();
return 0;
}

请问哪种说法是正确的:
A. 程序编译错误。
B. 程序编译正确,但是运行时发生异常
C. 程序编译正确,运行时有时正常,有时发生异常。
D. 程序编译正确,运行时正常

你的选择是哪一个?
=========================================================
...全文
5234 113 打赏 收藏 转发到动态 举报
写回复
用AI写文章
113 条回复
切换为时间正序
请发表友善的回复…
发表回复
sd5368821 2007-11-15
  • 打赏
  • 举报
回复
c++关于类的定义,分为数据区和代码区,数据区是具体对象个有一份,代码区共享一份,这是我的大学教材的内容。。还有静态成员也是共享的
jlu_ding 2007-07-16
  • 打赏
  • 举报
回复
p->foo::Virtual_display();
p哪有foo这个成员函数?
jlu_ding 2007-07-16
  • 打赏
  • 举报
回复
我在vc6.0试了一下c,d 都不行啊
zhoche2008 2007-07-16
  • 打赏
  • 举报
回复
即使Ajax倒下,不过不要紧,它本身就是一个过渡性技术。不过,Ajax所要做的,就是给我们洗脑:

  Ajax告诉我们,重视脚本,因为他们灵活。

  Ajax告诉我们,重视用户,因为他们掏钱。

  Ajax告诉我们,重视交互,因为软件就是服务。

  Ajax告诉我们,重视Web,因为方便比什么都重要。

  Ajax告诉我们,摘下眼罩,换种方式思考问题吧。当你背过脸无视世界的变化时,是世界抛弃了你,而不是你以为的掩耳盗铃。
nicolas16 2007-07-16
  • 打赏
  • 举报
回复
学习
njuxjzhu 2007-07-15
  • 打赏
  • 举报
回复
理解就行了,不要记住。。。
极其差的风格。。
su_horng 2007-07-15
  • 打赏
  • 举报
回复
列位,你們把他反編譯來看不就好了?
spoled 2007-07-14
  • 打赏
  • 举报
回复
内容还是不错的,但是有些就不太明白了啊
tmhlcwp 2007-07-09
  • 打赏
  • 举报
回复
支持楼上的
karlzheng 2007-06-27
  • 打赏
  • 举报
回复
assassin5616() ( ) 信誉:100 Blog 加为好友 2007-5-15 16:24:48 得分: 0
=================================================================================
这种多能有多大的实际意义呢,最近我们公司一个高级程序员刚买了房子,很一般的一间房子就耗光了他的所有积蓄,装修都要百般省钱才行,这才刚开始呢,结婚怎么办,有了孩子怎么办,至少如果你发现你很努力的结果只是挣扎在挣钱养家这个阶段的话,你会觉得你所做的都好没有意义,我现在没有那个高级程序员拿的多,可看着他现在的生活,我连一点向往都没有。
====================================================================================
编程是一种爱好!不仅是钱的问题!!

50条准则中:
最后一条:
请热爱C++!
eqxu 2007-05-23
  • 打赏
  • 举报
回复
还是正规的写程序,为什么要这么引用静态成员呢?这种习惯不好!
roger_77 2007-05-22
  • 打赏
  • 举报
回复
最好能再多些此类讨论的帖子
这才像个技术论坛的样子
嘿嘿
h9999h 2007-05-22
  • 打赏
  • 举报
回复
很好,很有收获。。
yydrewdrew 2007-05-21
  • 打赏
  • 举报
回复
我选D, " m_nVar2 is %d", m_nVar2,都可以访问
buggycode 2007-05-21
  • 打赏
  • 举报
回复
虽然知道答案,但是觉得研究这个真的很没有意义,谁把这样的code写在程序里虽然没错也该打屁股
KenYuan2016 2007-05-21
  • 打赏
  • 举报
回复
B. 程序编译正确,但是运行时发生异常
envoyfromabyss 2007-05-21
  • 打赏
  • 举报
回复
????弱弱的问一句,这个东西有什么实际意义吗?
wjlsmail 2007-05-21
  • 打赏
  • 举报
回复
static 变量在静态存储区存储,故还能访问到。
needallcodes 2007-05-21
  • 打赏
  • 举报
回复
有一本书叫什么来着~~~? 是以编译器角度讲解C++的,鸟语花香的
关于0指针, 小弟我就知道可以用来将结构成员的偏移包装成宏, 作为常量使用. 以解决从内存到数据块的某种cast
把this变成0能玩出什么花样, 还真没琢磨过...
庄鱼 2007-05-21
  • 打赏
  • 举报
回复
我再顶下
刚刚考试完,考的软件工程,给出一程序改错题,看到那个题我就想到了这个题,大家也来看看我这个程序到底有错没,
#include<iostream>
using namespace std;
class A
{
public:
void dis(){cout<<"AAA"<<endl;}
};
int main()
{
A *p;
{ //------------------------V
A a;
p=&a;
}//--------------------------A
p->dis();
return 1;
}
---------------------------
有错,存在调用已释放的野指针。不过,在有些编译器上(如VC),由于域的定义为自函数体内声明以下作用有效,因此,有可能会“正常”运行。
加载更多回复(93)

64,648

社区成员

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

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