如何解决分配给灵活的数组成员在 C 中没有按预期工作
我正在做一个练习,我必须创建两个结构,一个用于存储点数据,另一个用于存储多边形。然后我必须创建一个函数来创建一个给定中心、半径和顶点数量的正多边形。到目前为止,我还没有考虑半径和中心。数学运算很好,但是由于某种原因,当我尝试将点存储在多边形数组中时,似乎存在一些问题。主函数的最后一行打印 -nan
或非常大的数字(取决于数组的索引)。我猜问题出在 malloc
函数或赋值 regular_polygon->vertex_list[i] = temp;
中,但我不知道我做错了什么。
代码如下:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define PI 3.14159265
struct point {
float x;
float y;
};
struct polygon {
int num_vertex;
struct point vertex_list[];
};
struct polygon regular_polygon(struct point center,int num_vertex,float radius){
struct polygon *regular_polygon = malloc(sizeof(*regular_polygon) + num_vertex * sizeof(regular_polygon->vertex_list[0]));
regular_polygon->num_vertex = num_vertex;
float step = 2. * PI / (float) num_vertex;
for (int i = 0; i < num_vertex; i++)
{
float x = cos(i * step);
float y = sin(i * step);
struct point temp = {x,y};
printf("(%f,%f)\n",temp.x,temp.y);
// Here
regular_polygon->vertex_list[i] = temp;
}
return *regular_polygon;
}
int main() {
struct point c1 = {3,5};
struct polygon p1 = regular_polygon(c1,6,1);
printf("%f \n",p1.vertex_list[1].x );
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。