你能告诉我在C中从内存中保留1000位的最佳方法吗? 我正在做一个程序,我需要管理标志(值= 0或= 1)。最有效的方法是什么? 我在考虑保留所需的空间并使用掩码控制标志(位)。 谢谢
答案 0 :(得分:3)
在C中可以访问/寻址的最少内存是一个宽度为CHAR_BIT
位的字节(保证长度至少为8位)。因此,如果您正在寻找打包结构,则可以使用ceil(1000/8)
字节。
您可能需要查看this SO问题的位操作详情。
答案 1 :(得分:2)
您可以使用bool
类型:
#include <stdbool.h> // for bool
#include <stdlib.h> // for malloc
#define N 1000
bool *b = malloc(N * sizeof *b);
// for example to set the 42th element to 1
b[41] = 1;
答案 2 :(得分:0)
之类的东西?
struct bitf
{
unsigned char b:1;
};
struct bitf[1000];
如果您不使用位掩码,则max size是计算机上变量的最大大小。 Error trying to define a 1,024-bit (128 Byte) Bit Field
或最小记忆:
#include <stdio.h>
int main(void)
{
struct bitf
{
unsigned char a:1;
unsigned char b:1;
unsigned char c:1;
unsigned char d:1;
unsigned char e:1;
unsigned char f:1;
unsigned char g:1;
unsigned char h:1;
};
struct bitf number[125];
number[100].a = 1;
number[110].h =1;
printf("size: %d a:%d h:%d\n",sizeof(number), number[100].a ==0, number[110].h ==1);
return 0;
}
输出:
size: 125 a:0 h:1