我是C语言新手,想建立一个动态的一维数组存放随机数,结果如图,求大神指教哪里出错了!!

图片说明

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)
}