Теперь, когда вы отредактировали требуемый вывод, на вопрос можно ответить.
Измените цикл печати следующим образом:
for(i = 0; i < 5; i++){
printf("%d", p_out1[i]);
}
printf(" ");
for(i = 0; i < 5; i++){
printf("%d", p_out2[i]);
}
printf(" ");
for(i = 0; i < 5; i++){
printf("%d", p_out3[i]);
}
Это выведет:
12345 23456 34567
В исходном коде вы чередовали 3 массива.Вы хотели напечатать каждый из них по отдельности.
РЕДАКТИРОВАТЬ: Что касается вашего второго вопроса, вы можете объединить p_out1
, p_out2
и p_out1
в массив.Ваш код с этим сделано:
void func(int **p_in){
int *p_temp1 = (int *)malloc(5*sizeof(int));
int *p_temp2 = (int *)malloc(5*sizeof(int));
int *p_temp3 = (int *)malloc(5*sizeof(int));
int i;
for(i = 0; i < 5; i++){
p_temp1[i] = i+1;
p_temp2[i] = i+2;
p_temp3[i] = i+3;
}
p_in[0] = p_temp1;
p_in[1] = p_temp2;
p_in[2] = p_temp3;
}
int main(){
int *p_out[3];
func(p_out);
int i;
for(i = 0; i < 5; i++){
printf("%d", p_out[0][i]);
}
printf(" ");
for(i = 0; i < 5; i++){
printf("%d", p_out[1][i]);
}
printf(" ");
for(i = 0; i < 5; i++){
printf("%d", p_out[2][i]);
}
free(p_out[0]);
free(p_out[1]);
free(p_out[2]);
return 0;
}