我有一个结构数组:
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/