可能重复:
How to find the sizeof(a pointer pointing to an array)
我使用以下代码
创建数组float *A;
A = (float *) malloc(100*sizeof(float));
float *B;
B = (float *) malloc(100*sizeof(float));
但在这些之后,当我按下面的方式输入A和B大小的打印件时,我得到2,因为我希望看到100。
sizeof(A)/sizeof(float)
答案 0 :(得分:11)
你的期望是错误的。 A
是float*
,因此无论您如何实际分配它,其大小都将为sizeof(float*)
。
如果你有一个静态数组 - 即float A[100]
,那么这就行了。
由于这是C ++,请使用std::array
或std::vector
。
最糟糕的情况是,使用new[]
。 绝对不要使用malloc
。
答案 1 :(得分:4)
这仅适用于在当前范围内定义的静态数组。
您的示例中的所有内容都是指向float
的指针的大小除以float
的大小。