p++之后,这个p已经不是原来的p了。p[i]当然是访问了不知道什么数据了。
p是指针,指向的是地址,你在赋值循环中每次执行p++,当执行完循环,p++的指向已经不是你申请的内存的起始,而是结尾
你的程序能执行没crash已经是万幸了,另外malloc申请的内存要记得释放。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int num = 10;
int * p =NULL;
p = (int *)malloc(sizeof(int)*num);
memset(p,0x00,sizeof(int)*num);
int * tmp_p =p;
for (int i = 0; i < num; ++i,tmp_p++)
{
*tmp_p = i+1;
/* code */
}
for (int i = 0; i < num; ++i)
{
printf("i:[%d]--[%d]\n",i,*(p+i));
}
free(p)
}