c++ - 为什么结构数组的大小在传递给函数时会发生变化?

标签 c++ c

<分区>

#include<stdio.h>
#include<string.h>
typedef struct
{
    float TotalSize;
    float AvailableSize;
}SdMemoryInfo;


void SdGetMemoryUsageRespCsccToGui(SdMemoryInfo *abcdSdMemoryInfo)
{
    printf("\nSize of(SdMemoryInfo): %d %d",sizeof(abcdSdMemoryInfo),sizeof(float)); //Size of abcdSdMemoryInfo
}

int main()
{
    SdGetMemoryUsageResp mSdGetMemoryUsageResp;
    SdMemoryInfo vSdMemoryInfo[2];
    vSdMemoryInfo[0].TotalSize = 1;
    vSdMemoryInfo[0].AvailableSize = 2;
    vSdMemoryInfo[1].TotalSize = 3;
    vSdMemoryInfo[1].AvailableSize = 4;


    printf("\nSize of(SdMemoryInfo): %d %d",sizeof(vSdMemoryInfo),sizeof(float)); //Size of vSdMemoryInfo

    SdGetMemoryUsageRespCsccToGui(vSdMemoryInfo);
}

输出:

Size of(SdMemoryInfo): 16 4
Size of(SdMemoryInfo): 8 4 

为什么结构数组vSdMemoryInfoabcdSdMemoryInfo的大小不同?

最佳答案

您将一个指向结构的指针 传递给函数。您得到的是指针的大小,而不是它指向的数据。

如果将数组传递给函数,则始终需要将数组中元素的数量作为单独的参数传递给函数。

虽然 C++ 还有其他选项,比如 "size of array" templates .或者 std::array (或可选 std::vector )。

关于c++ - 为什么结构数组的大小在传递给函数时会发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41159769/

相关文章:

c++ - 使用 memcpy 尝试将一个结构复制到 char[] 缓冲区中

c++ - 根据模板参数有条件地定义模板类的构造函数

c++ - 未定义对 Compte 的 vtable 的引用

c - 如何访问由双指针表示的二维数组的元素作为 C 中的一维数组

从中缀创建 rpn 表达式

python - 如何高效地将图像从C进程传递到Python进程?

c - 如何从特定数字中获取值?

c++ - 我可以在 DLL 中组织类吗?

c++ - 将 .begin() 与 .end() 用于 std::inserter 用于 std::set 之间有区别吗?

c++ - 程序应该显示文件的最后 5 行,但不适用于大文件