Chinaunix首页 | 论坛 | 博客
  • 博客访问: 916764
  • 博文数量: 177
  • 博客积分: 8613
  • 博客等级: 中将
  • 技术积分: 2835
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-12 04:16
文章分类
文章存档

2012年(12)

2011年(24)

2010年(24)

2009年(75)

2008年(42)

我的朋友

分类: C/C++

2009-07-14 22:13:49

   写四个函数,简单的实现位数组的几个操作。

[root@bjxdurs235 20090714]# cat -n bit_arry.c
     1  #include
     2  #define MAX_SIZE 20
     3  void set_bit( char bit_array[], unsigned bit_number )
     4  {
     5          bit_array[bit_number] = 1;
     6  }
     7
     8  void clear_bit( char bit_array[], unsigned bit_number )
     9  {
    10          bit_array[bit_number] = 0;
    11  }
    12
    13  void assign_bit( char bit_array[], unsigned bit_number, int value )
    14  {
    15          if (value ==0)
    16                  bit_array[bit_number] = 0;
    17          else
    18                  bit_array[bit_number] = 1;
    19  }
    20
    21  int test_bit( char bit_array[], unsigned bit_number )
    22  {
    23          if (bit_array[bit_number] != 0)
    24                  return 1;
    25          else
    26                  return 0;
    27  }
    28
    29  int main(void)
    30  {
    31          unsigned i;
    32          char bit_array[MAX_SIZE];
    33          for (i=0; i<(MAX_SIZE-1); i++)
    34                  set_bit(bit_array,i);
    35          bit_array[MAX_SIZE-1] = '\0';
    36
    37          clear_bit(bit_array,0);
    38          clear_bit(bit_array,4);
    39          clear_bit(bit_array,5);
    40
    41          assign_bit(bit_array,0,1);
    42          assign_bit(bit_array,3,0);
    43
    44          if (test_bit(bit_array,3))
    45                  printf("true\n");
    46          else
    47                  printf("false\n");
    48
    49          for (i=0; i    50                  printf("%d",bit_array[i]);
    51          printf("\n");
    52
    53
    54  }
[root@bjxdurs235 20090714]# ./a.out
false
11100011111111111110

刚开始遇到的问题是,在调用这四个函数的时候,是这样调用的:
set_bit(bit_array[],i);
这样编译的时候报错:
bit_arry.c: In function `main':
bit_arry.c:34: error: syntax error before ']' token

这个小错误需要记得,上次也犯过同样的错误,没有记得,还是对数组的传递不深了解。

好了,看看学到了啥:

1、打印数组的时候还是要用循环,用%s打印数组名也可以,但是1的ansic编码是不好看,还是用循环里的%d打印比较友好一点;
2、如果要在函数里实现修改变量,把数组名(也就是指针)传过来,是个好方法;
3、注意各个函数的返回类型。
阅读(947) | 评论(0) | 转发(0) |
0

上一篇:第5章操作符和表达式

下一篇:字符串反转

给主人留下些什么吧!~~