您好我想将一个struct数组传递给一个方法,而不是打印它的值但是当我尝试它只打印零时,请注意主要工作正常问题是在max方法中:
#include <stdio.h>
#include <stdlib.h>
struct rectangle {
float length;
float width;
};
void max (struct rectangle * a, int size){
printf("the test %d \n", (*a).width);
int i;
for(i=0; i<size; i++){
printf("the test %d \n", a[i].width);
}
}
void main()
{
printf("enter the size of both arrays \n");
int x ;
scanf("%d",&x);
struct rectangle* r ;
r = malloc(x*sizeof(struct rectangle));
int j ;
for (j = 0 ; j < x ; j++){
printf("enter rectangle length \n");
scanf("%f",&r[j].length);
printf("enter rectangle width \n");
scanf("%f",&r[j].width);
}
for (j = 0 ; j < x ; j++){
printf(" %f\n",r[j].length);
printf(" %f\n",r[j].width);
}
max(r,x)
}
但是当我尝试运行它时会崩溃。
答案 0 :(得分:1)
目前,您正在将指针传递给指向结构的指针,但在函数max
中,您尝试将其作为结构指针访问。
使用max(r,x)
代替max(&r,x)
。
编辑:
此外,在max
函数中:
printf("the test %f \n", a[i].width); // use %f instead of %d
或者,如果您真的希望它们以%d
打印,请使用以下方式:
printf("the test %d \n", (int)a[i].width); // use %d, and typecast float to int
答案 1 :(得分:0)
在max
内,您尝试使用float
格式说明符打印%d
值。这将无法正常工作。 printf
值的float
格式说明符为%f
,而不是%d
。
在main
内,您正确使用了%f
。你为什么突然切换到%d
中的max
?