Я не могу понять, что происходит.Я написал этот тестовый код, чтобы проверить процедуру, которая мне нужна на другом коде.Я в основном хочу получить указатели только на значения, отличные от нуля в массиве.
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int b[10]={0, 1, 2, 0, 4, 0, 0, 7, 8, 9};
int *p;
int i;
int count=0;
p=malloc(0) ;
for (i=0;i<10;i++)
if (*(b+i)!=0)
{
count++;
realloc(p,count * sizeof(int));
*(p + count -1) = *(b + i);
printf("*(p + %d) = %d\n",count-1,*(p + count -1));
}
for (i=0;i<count;i++)
printf("*(p+%d) = %d\n",i,*(p+i));
return 0;
}
И что происходит, так это то, что при печати внутри первого цикла «for» они печатаются так, как я ожидаю,поэтому 1 2 4 7 8 9, но когда я печатаю эти значения во второй раз, они иногда бывают правильными, иногда первые два числа абсолютно случайны.Это происходит из-за неправильного использования realloc?