为什么我的sizeof(arr)/ sizeof(arr [0])= 1?

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)

我测试初始化xx[100],然后它工作,但不应该malloc()调用设置结构的数组x[15]?它只是测量两个doubles 的字节吗?

Sou*_*osh 6

在你的代码中

polygon[cc].x
Run Code Online (Sandbox Code Playgroud)

是一个指针.通过应用sizeof该指针,您获得的是该指针本身的大小,而不是该指针指向的已分配内存的大小.

请记住,数组不是指针,因此如果应用于sizeof数组,您将获得整个数组的大小.

在你的情况下,sizeof(double *)等于sizeof(double),所以你得到的结果为1.