af3*_*3ld 0 c arrays malloc struct pointers
typedef struct {
double *x;
int points;
} Polygon;
polygon[cc].points = readobject(polygon[cc].file); //lets say equals 15
polygon[cc].x = (double *) malloc(polygon[cc].points * sizeof(double));
printf("%d\n", sizeof(polygon[cc].x) / sizeof(polygon[cc].x[0]));
//This prints out on 1
Run Code Online (Sandbox Code Playgroud)
我测试初始化x
为x[100]
,然后它工作,但不应该malloc()
调用设置结构的数组x[15]
?它只是测量两个double
s 的字节吗?
在你的代码中
polygon[cc].x
Run Code Online (Sandbox Code Playgroud)
是一个指针.通过应用sizeof
该指针,您获得的是该指针本身的大小,而不是该指针指向的已分配内存的大小.
请记住,数组不是指针,因此如果应用于sizeof
数组,您将获得整个数组的大小.
在你的情况下,sizeof(double *)
等于sizeof(double)
,所以你得到的结果为1.