写四个函数,简单的实现位数组的几个操作。
[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、注意各个函数的返回类型。
阅读(973) | 评论(0) | 转发(0) |