一个简单的指针问题

来源:百度知道 编辑:UC知道 时间:2024/05/20 22:44:45
#include <stdlib.h>
#include <stdio.h>
#define SIZE 5

int main(){
int *data;
int i;

data = (int *)malloc(SIZE * sizeof(int));
if (data == NULL){
printf("memory allocation error: data\n");
return EXIT_FAILURE;
}

for (i = 0; i < SIZE; i++)
{
//如果我把data++放到这里 为什么和现在的位置得到的结果不同呢?
*data=i;
data++;
}

printf("%d\n",*data);

}
我运行没有问题,我用的vc2005

我在VC中不能运行啊。。
return EXIT_FAILURE;是什么啊?。
把完整的贴出来
你对自增和自减还不明白。。
如果你放到你说的那个位置的话
开始是指向第一个区域的
->|
..|
..|
..|
..|
:i=0;那么先执行data++,那么data所指的位置就是的下一个位置。
就会是这个结果
..|
->|_0_
..|
..|
..|
最后停止循环后data所指的一个区域还是有但是输出的是乱码

1、可能需要一句:#define EXIT_FAILURE 1
2、如果如你所说位置加入data++,则会造成指针溢出,即SIZE个数依次向后移动了一个单位