`

又是一个指针地址操作的错误

阅读更多
本篇无学习价值。纯粹记录案件的发生。甚入!!


浓缩如下

	int *pI;
	int i;

	pI = new int[10];

	cout<<"&pI:"<<&pI<<endl;
	cout<<"pI:"<<pI<<endl;

	for(i=0; i<10; ++i)
	{
		cout<<&pI[i]<<endl;
	}

	cout<<"----------"<<endl;
	for(i=0; i<10; ++i)
	{
		cout<<pI+i*sizeof(int)<<endl; //error
	}


一时顺手写了//error处的代码。找得好苦,最后从把数据文件和原来的文件一个个字节的比过去。发现写入除了第一个,其他都是为空。改正很简单,考虑下以下几种类型区别:

int i;
int *p;

cout<<&i;
cout<<i+1;

cout<<p;
cout<<p+1;
cout<<(int)p+1;
2
0
分享到:
评论

相关推荐

    指针实验实验报告.doc

    } 程序设计 编写并上机调试运行能实现以下功能的程序或函数: 已知一个长整形变量占四个字符,其中每个字节又分高四位和低四位。试编写一个程序 ,从该长整形变量的高字节开始,依次取出每个字节的高四位和低四位并...

    你必须知道的495个C语言问题

    可我找不到任何方法来声明这样的函数——感觉我需要一个返回指针的函数,返回的指针指向的又是返回指针的函数……,如此往复,以至无穷。 数组大小 1.23 能否声明和传入数组大小一致的局部数组,或者由其他参数...

    《计算机操作系统》期末复习指导

    信号量的数据结构为一个值和一个指针,指针指向等待该信号量的下一个进程。信号量的值与相应资源的使用情况有关。当它的值大于0时,表示当前可用资源的数量;当它的值小于0时,其绝对值表示等待使用该资源的进程...

    操作系统(内存管理)

    操作系统维持着一个虚拟地址到物理地址的转换的表,以便计算机硬件可以正确地响应地址请求。并且,如果地址在硬盘上而不是在 RAM 中,那么操作系统将暂时停止您的进程,将其他内存转存到硬盘中,从硬盘上加载被请求...

    《你必须知道的495个C语言问题》

    可我找不到任何方法来声明这样的函数——感觉我需要一个返回指针的函数,返回的指针指向的又是返回指针的函数……,如此往复,以至无穷。 12  数组大小 13 1.23 能否声明和传入数组大小一致的局部数组,或者由...

    代码语法错误分析工具pclint8.0

    好了,这时VC tools菜单下应该又多了一个pclint_project项了,你以后可以用它来对一个VC项目运行lint检查程序了. (二)SourceInsight中集成pclint程序的方法. Windows平台下也有好多人都喜欢用SourceInsight编辑C/...

    你必须知道的495个C语言问题.pdf

    可我找不到任何方法来声明这样的函数——感觉我需要一个返回指针的函数,返回的指针指向的又是返回指针的函数,如此往复,以至无穷。 数组大小 1.23 能否声明和传入数组大小一致的局部数组,或者由其他参数指定大小...

    VC++6.0核心编程源码.rar

    建立这样一个列表时存在的问题是,你可以调用一个Windows函数,但是该函数能够在内部调用另一个函数,而这另一个函数又可以调用另一个函数,如此类推。由于各种不同的原因,这些函数中的任何一个函数都可能运行失败...

    游戏画面就弹出内存不能为read修复工具

    在没有保护机制的操作系统下(如DOS),写数据到这个地址会导致立即当机,而在健壮的操作系统中,如Windows等,这个操作会马上被系统的保护机制捕获,其结果就是由操作系统强行关闭出错的应用程序,以防止其错误扩大。...

    windows用户称拦截api

    开辟这4GB的虚拟地址空间之后,系统会把磁盘上的执行文件映射到进程的地址空间中去(一般是在地址0x00400000,可以通过修改编译选项来修改这个地址)而一个进程运行所需要的动态库文件则一般从0x10000000开始加载。...

    经典C/C++面试题目大汇总(全附答案).doc

    指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。此外,就是上面提到的对函数传ref和...

    C语言FAQ 常见问题列表

    例如定义一个包含 N 个指向返回指向字符的指针的函数的指针的数组? o 2.8 函数只定义了一次, 调用了一次, 但编译器提示非法重定义了。 o 2.9 main() 的正确定义是什么? void main() 正确吗? o 2.10 对于没有...

    0x00000000内存不能为read修复工具

    个0值,这时返回值“0”已不表示新启用的指针,而是系统向应用程序发出的一个通知,告知出现了错误。 作为应用程序,在每一次申请内存后都应该检查返回值是否为 0,如果是,则意味着出现了故障,应该采 取一些措施...

    算法与数据结构复习题型

    12. 对于一个线性表既要求能够进行快速的插入和删除,又要求存储结构能反映数据之间的逻辑关系,则应该使用 【 】 A. 顺序存储方式 B.链式存储方式 C. 散列存储方式 D.以上均可以 13. 一个算法应该具有“确定性”等5...

    【。net 专业】 面试题

    如果一个密封类被指定为其它类的基类,则会发生编译时错误。 密封类不能同时为抽象类。 sealed 修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。具体说来,由于密封类永远不会有任何派生类,所以对...

Global site tag (gtag.js) - Google Analytics