储备空间C.

时间:2012-06-02 19:44:44

标签: c

你能告诉我在C中从内存中保留1000位的最佳方法吗? 我正在做一个程序,我需要管理标志(值= 0或= 1)。最有效的方法是什么? 我在考虑保留所需的空间并使用掩码控制标志(位)。 谢谢

3 个答案:

答案 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
相关问题