c - 我如何操纵位从0x00到0x34,以便创建由这些值表示的卡座

标签 c arrays pointers bit-manipulation

编写一个函数,使用前面问题中使用的相同定义来创建存储在数组中的一副纸牌。阵列中每个套件将有一张卡。
笔记:
•您必须malloc()返回数组的存储空间

下面是一个代码片段,显示了调用该函数并在卡座中打印第51张卡的十六进制值。

    14     char * c; 
    15     c = make_deck(); 
    16     printf(" %x\n",*(c+50)); 


我的代码

    1 char *make_deck()
    2 {
    3 int i=0;
    4 char *deck;
    5 deck= (char *)malloc(sizeof(char)*52);
    6
    7   if (deck==NULL)
    8    {
    9    printf(“malloc of size %d failed!”,52);
    10    }
    11       for(i=0;i<52;i++)
    12       {
    13          *deck= 0x00;
    14       }

最佳答案

变量i在循环中已经从0(0x00)递增到52(0x34)。您可以为其分配*(deck + i)deck[i]):

#define DECK_SIZE 52

char *make_deck()
{
  char i;
  char *deck;

  deck = malloc(sizeof(char) * DECK_SIZE);

  if (deck == NULL) {
    printf("malloc of size %d failed!", DECK_SIZE);
    return NULL; // stop if malloc failed
  }

  for (i = 0; i < DECK_SIZE; ++i)
    deck[i] = i;

  return deck;
}

关于c - 我如何操纵位从0x00到0x34,以便创建由这些值表示的卡座,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55486660/

相关文章:

c - 尝试解决 C 语言中的位级操作难题时遇到困难

c - C 结构指针错误

javascript - 高级 JavaScript 数组按计数分组

c++ - C++中常量指针的用途是什么?

c - DJI Matrice 100 无人机激活失败

c++ - valgrind - hellgrind 与泄漏检查的不同结果

javascript - jsDoc - 如何指定数组长度

c++ - 用c++解决骑士之旅

c - 将指针分配给整数数组时指针类型不兼容

c++ - 指向指针的引用变量