`

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

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


浓缩如下

	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
分享到:
评论

相关推荐

    C语言指针注意事项

    一个指针变量存储了一个内存地址,这个地址指向了另一个变量。例如,`int *p`声明了一个指针`p`,它指向`int`类型的变量。这里的星号(*)表示`p`是一个指针,而`int`则说明指针所指向的内容是整型。 对于复杂的指针...

    C_C++指针常量和常量指针详解

    - 可以同时定义一个既是指针常量又是常量指针的变量,这时需要在定义时使用两个 const 关键字,分别放在 * 的左右两边。 - 例如:`const int *const ptr = &var;`,这里 ptr 既是指向常量的指针也是指针常量,即...

    C语言中Const指针变量(常指针)

    ` 这是一个既指向常量又是一个常指针的声明,即`cp`既不能改变其所指向的地址,也不能通过`cp`修改该地址中存储的数据。 指针和const的结合使用是C语言中一项重要的知识点,它能够帮助我们更好地控制程序中数据的...

    C语言指针教学中常见错误分析.pdf

    指针的定义涉及计算机内存单元的地址,每个内存单元对应一个特定的地址编号。不同的数据类型在内存中占用的存储单元数量及连续性各不相同。如char型数据仅占用一个存储单元,而int型数据占用四个连续的存储单元。...

    C语言指针习题集.doc

    错误的解释是,一个变量的地址称为该变量的地址,而不是指针。指针是一个变量,它存储了另一个变量的地址。 9. 语句 int i,*p=&i;是正确的 C 定义。正确的解释是,语句int i,*p=&i;定义了一个整型变量i和一个指针...

    指针和内存分配详解

    数组名是一个常量指针,指向数组的首元素,而指针是一个变量,可以指向任意类型的内存块。指针提供了更多灵活性,但也更易出错。例如,数组名不能进行赋值操作,而指针可以。数组的大小在声明后不可更改,但指针可以...

    c语言指针详解和用法

    - `int **p`:声明了一个二级指针,`p`是一个指向指针的指针,该指针又指向一个整型变量。 - `int (*p)[3]`:`p`是一个指针,它指向一个包含三个整型元素的数组。 - `int *p(int)`:`p`是一个函数,接受一个整型参数...

    蓝色水晶左手鼠标指针

    5. `cross.cur` - 可能是“交叉”或“错误”状态的指针,可能是一个叉号,表示操作失败或不被允许。 6. `SizeNS.cur` - 这是上下缩放的指针,用户可以用它来调整窗口的高度。 7. `Left hand.cur` - 左手形态的指针,...

    配置文件操作类封装及智能指针实现

    1. `shared_ptr`:这种智能指针可以被多个对象共享,内部维护一个引用计数,当最后一个`shared_ptr`销毁时,若引用计数为0,则释放所指向的对象。在多线程环境中,`shared_ptr`使用了线程安全的引用计数,因此在并发...

    让你不再害怕指针

    `,由于`[]`的优先级高于`*`,这表示`ptr`是一个数组,数组里的元素是指针,每个指针指向一个`int`类型的数据。 再比如,声明`int (*ptr)[3];`中,`*ptr`首先与`()`结合,表示`ptr`是一个指针,然后`ptr`与`[3]`...

    彻底搞定c指针

    每个变量都有一个唯一的内存地址,这个地址可以使用地址运算符`&`获取。例如,`int *p = &a;`这行代码就是将变量`a`的地址赋给了指针变量`p`。了解变量的地址对于理解和使用指针至关重要。 #### 第贰篇 指针是什么...

    C C++ 指针 面试题 笔试题

    1. **指针基础知识**:指针是C和C++中的一个特殊变量类型,它存储的是内存地址,可以用来间接访问和操作其他变量。理解指针的基本概念,包括指针变量的声明、初始化、解引用以及指针运算,是掌握指针的基础。 2. **...

    比较好的指针总结

    ` 表示 `p` 是一个指向指针的指针,即二级指针,指向的指针又指向整型数据。 理解并熟练掌握这些基本概念对于编写高效、安全的代码至关重要。在实际开发中,合理使用指针可以极大地提高程序的性能和灵活性,但同时...

    指针经验总结(经典 非常详细)

    `:这里有两个连续的 `*`,表示 `p` 是一个指向指针的指针,而这个指针又指向整型数据。 4. **函数和指针结合**: - `int p(int);`:`p` 是一个接受整型参数并返回整型结果的函数。 - `int (*p)(int);`:这里 `*`...

    C语言指针初探.pdf

    C语言中的指针是一种基本而又强大的概念,它允许程序员直接操作内存地址。在理解指针之前,首先需要了解计算机内存的基本工作原理。内存是由众多存储单元构成,每个单元可以存储一个字节的数据。每个存储单元都有一...

    C++指针_.docx

    对于多级指针,如`int **ptr`,指针所指向的类型是`int *`,即它指向的是一个指针,而这个指针又指向一个`int`。 四、指针的值 指针的值是内存地址,表示指针指向的内存区域的起始位置。未初始化的指针没有明确的值...

    C++指针应用的四大误区

    **定义:** 在C++中,`NULL`(或在现代C++中使用`nullptr`)表示一个未指向任何有效内存地址的指针。对空指针进行解引用会导致程序崩溃。 **误区1:** **直接使用未初始化的指针** - **问题描述:** 如果声明了一...

    C语言指针导学

    这意味着,指针变量存储的是内存地址,而通过这个地址,程序可以访问到相应的数据。例如,如果有一个整型变量a,并且我们定义了一个指针变量Ptr,将Ptr指向变量a的地址,那么Ptr就是指向a的指针。 指针的灵活性和...

    C语言习题集合指针C语言习题集合指针.doc

    `是二级指针,它可以指向一个指针变量,而该指针变量又指向一个整数。 9. **动态内存分配**: 使用`malloc()`和`calloc()`函数动态分配内存,`free()`函数释放内存。例如`int *ptr = (int *)malloc(sizeof(int) * ...

Global site tag (gtag.js) - Google Analytics