C语言,求结构数组元素个数
32位平台下,现有以结构体:
struct data{
unsigned int a; // 4 bytes
unsigned char * s; // 不定长的字符串指针
unsigned short v; // 2 bytes
};
数组
struct data das[] =
{
{0,"abc",0},{0,"abc",0},{0,"abc",0},...{0,"abc",0}
};
请问,怎样获得数组das的元素个数,谢谢
[解决办法]
struct data x
sizeof(x.dax)/sizeof(x.dax[0]))
[解决办法]
32位平台下,现有以结构体:
struct data{
unsigned int a; // 4 bytes
unsigned char * s; // 不定长的字符串指针
unsigned short v; // 2 bytes
};
数组
struct data das[] =
{
{0,"abc",0},{0,"abc",0},{0,"abc",0},...{0,"abc",0}
};
请问,怎样获得数组das的元素个数,谢谢-------
---------------------------------------
上述描述有些问题, 结构体保存的是指针,而不是字符串。所以对于 这种来说 只要 sizeof(das)/sizeof(data) 就可以,不过前提 要采用字节对齐方式,免得结构大小与按字节算出的不一致
[解决办法]
sizeof(das)/sizeof(data)
[解决办法]
#include<stdio.h>struct data{ unsigned int a; unsigned char s[4]; unsigned short v; }; struct data das[] = { {0,"abc",0},{0,"abc",0},{0,"abc",0},{0,"abc",0} }; void main(){ printf("%d\n",sizeof(das)/sizeof(data));}
[解决办法]
sizeof(das)/sizeof(data)
这样肯定不行的, data 不是类型! struct data 才是类型!
[解决办法]
#include<stdio.h>struct data{ unsigned int a; // 4 bytes char *s; // ²»¶¨³¤µÄ×Ö·û´®Ö¸Õë unsigned short v; // 2 bytes }; struct data das[] = { {0,"abc",0},{0,"abc",0},{0,"abc",0},{0,"abc",0} }; void main(){ printf("%d\n",sizeof(das)/sizeof(data));}
[解决办法]
#define num sizeof(das)/sizeof(das[0])