C 如何使三分音符变短?

C 如何使三分音符变短?,c,printf,C,Printf,原来的问题是我的困惑,对不起 #include <stdio.h> #include <stdlib.h> void func(int **p_in1, int **p_in2, int **p_in3){ int *p_temp1 = (int *)malloc(5*sizeof(int)); int *p_temp2 = (int *)malloc(5*sizeof(int)); int *p_temp3 = (int *)malloc(5*sizeof

原来的问题是我的困惑,对不起

#include <stdio.h>
#include <stdlib.h>

void func(int **p_in1, int **p_in2, int **p_in3){
  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_in1 = p_temp1;
  *p_in2 = p_temp2;
  *p_in3 = p_temp3;
}

int main(){
    int *p_out1 = NULL, *p_out2 = NULL, *p_out3 =NULL;
    int i;
    func(&p_out1, &p_out2, &p_out3);

    for(i = 0; i < 5; i++){
        printf("%d", p_out1[i]);
        printf(" ");
        printf("%d", p_out2[i]);
        printf(" ");
        printf("%d\n", p_out3[i]);
    }

   free(p_out1);
   free(p_out2);
   free(p_out3);
   p_out1 = NULL;
   p_out2 = NULL;
   p_out3 = NULL;
   return 0;
}
#包括
#包括
void func(int**p_in1,int**p_in2,int**p_in3){
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;
对于(i=0;i<5;i++){
p_temp1[i]=i+1;
p_temp2[i]=i+2;
p_temp3[i]=i+3;
}
*p_in1=p_temp1;
*p_in2=p_temp2;
*p_in3=p_temp3;
}
int main(){
int*p_out1=NULL,*p_out2=NULL,*p_out3=NULL;
int i;
func(p_out1、p_out2和p_out3);
对于(i=0;i<5;i++){
printf(“%d”,p_out1[i]);
printf(“”);
printf(“%d”,p_out2[i]);
printf(“”);
printf(“%d\n”,p_out3[i]);
}
免费(p_out 1);
免费(p_out 2);
免费(p_out 3);
p_out1=NULL;
p_out2=NULL;
p_out3=NULL;
返回0;
}

我想通过使用一个段落来缩短“func”。如何将“p_in1,p_in2,p_in3”放在连续的内存空间中?

既然您已经编辑了所需的输出,这个问题就可以回答了

将打印循环更改为:

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]);
}
在您的原始代码中,您交错了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;
}
void func(int**p\u 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;
对于(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;
对于(i=0;i<5;i++){
printf(“%d”,p_out[0][i]);
}
printf(“”);
对于(i=0;i<5;i++){
printf(“%d”,p_out[1][i]);
}
printf(“”);
对于(i=0;i<5;i++){
printf(“%d”,p_out[2][i]);
}
自由(p_out[0]);
自由(p_out[1]);
自由(p_out[2]);
返回0;
}

您得到了什么样的输出,您期望得到什么?在这里工作:。它为您打印了什么?您可以发布预期的输出和收到的输出吗?对于这样一个小的缓冲区使用malloc()不是我会做的事情。把它放在书堆上就行了。使用int p_temp1[5]则不必释放它。要获得所需的输出,必须停止打印数字后的空格,并且需要分别循环每个数组。如果希望所有输出都在一行上,则需要在处理前两个数组后打印一个空格,在第三个数组后打印一个换行。
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;
}