C 如何求结构体数组的长度

标签 c

我有一个结构数组:

struct Stu* arr = (struct Stu*)calloc(ogr,sizeof(struct Stu));

我有一个 void 函数,它以 arr 作为参数,我必须在函数中找到 arr 的长度。

struct Lsn {
    char lsn_name[50];
}; 
struct Stu {
    char name[40];
    char surname[20];
    char st_id[11];
    struct Lsn* lsn;
};

最佳答案

C 中无法确定作为指针传递的数组的长度(大小)。您必须将大小作为参数传递给函数:

void f(void *arr, size_t size);

如果由于某种原因这是不可能的,并且如果数组被传递为空,那么您可以通过将数组的第一个字节设置为长度来进行破解,例如示例:

struct Stu* arr = (struct Stu*)calloc(ogr,sizeof(struct Stu));
*((int *)arr)= ogr;

在函数中:

size= *((int *)arr);   // get the size
*((int *) arr)= 0;     // reset the first few bytes

关于C 如何求结构体数组的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59489308/

相关文章:

c++ - 获取缓冲区内容,将其存储在结构中,获取新的缓冲区内容,看看结构中是否相等

c - 解析方程

c - fputs/puts 危险(在 C 中)?

c++ - 如何将 .c 和 .h 文件存储在包含路径中,与当前项目的源代码分开

c - 如何正确使用 fgets() 和 strncmp() 函数?

c - 这个算法属于哪种递归解析?自下而上还是自上而下?

c - 如何通过 C 中的地址来访问 char 数组中的数据?

c - 为什么我不能以这种方式释放分配的内存?

c - 什么是 C 中的结构的清晰、简单的解释

c++ - 无法理解 C/C++ 中++i 的输出