首页 > 代码库 > 20170425

20170425

输出人员信息系统中所有人的id:
  1 /*位置指针练习*/
  2 #include <stdio.h>
  3 int main() {
  4     int id = 0;
  5     FILE *p_file = fopen("a.bin", "rb");
  6     if(p_file) {
  7         while(fread(&id, sizeof(int), 1, p_file)) {
  8             printf("id是%d\n", id);
  9             fseek(p_file, 24, SEEK_CUR);
 10         }
 11         fclose(p_file);
 12         p_file = NULL;
 13     }
 14
 15     return 0;
 16 }

预处理指令
#define 这个预处理指令用来定义宏
宏可以用来给数字起名字
  1 /*
  2     宏演示
  3  */
  4 #include <stdio.h>
  5 int main() {
  6     int radius = 0;
  7     printf("请输入半径:");
  8     scanf("%d", &radius);
  9     printf("圆的周长是%g\n", 2 * 3.14f * radius);
 10     return 0;
 11 }
 添加宏
  1 /*
  2     宏演示
  3  */
  4 #include <stdio.h>
  5 #define PI 3.14f
  6 int main() {
  7     int radius = 0;
  8     printf("请输入半径:");
  9     scanf("%d", &radius);
 10     printf("圆的周长是%g\n", 2 * PI * radius);
 11     return 0;
 12 }
编写宏时要把名字写在前面,被代表的内容写在后面
不要在宏定义语句中使用赋值操作符
在gcc命令中可以使用-D选项定义宏,例如给宏指定对应数字
例子:gcc -DSIZE 10 指定了宏SIZE为10
宏也可以用来给一个计算公式起名字
宏可以使用参数表示计算公式中未知的内容,参数的个数没有限制
宏的参数可以代表任何东西,所以宏的参数没有类型
  1 /*
  2     宏演示
  3  */
  4 #include <stdio.h>
  5 #define PI 3.14f
  6 #define CIRCLE(r) 2 * PI * r
  7 int main() {
  8     int radius = 0;
  9     printf("请输入半径:");
 10     scanf("%d", &radius);
 11     printf("圆的周长是%g\n", CIRCLE(radius));
 12     return 0;
 13 }
用来给计算公式起名的宏中,不能定义自己的变量
  1 #include <stdio.h>
  2 #define SUB(x, y)   x - y
  3 int main() {
  4     printf("%d\n", SUB(8, 3));  //8 - 3 = 5
  5     printf("%d\n", 20 - SUB(8, 3)); // 20 - 8 - 3 = 9
  6     return 0;
  7 }
宏没有返回值变量,所以不能保证先完成宏内部的计算。
所有用来代表计算公式的宏都应该在计算公式外面加一对小括号,这样可以保证先完成
宏内部的计算
  1 #include <stdio.h>
  2 #define SUB(x, y)   (x - y)
  3 int main() {
  4     printf("%d\n", SUB(8, 3));  // 8 - 3 = 5
  5     printf("%d\n", 20 - SUB(8, 3));  // 20 - (8 - 3) = 15
  6     printf("%d\n", SUB(10, 5 - 2));  // 10 - 5 - 2 = 3
  7     return 0;
  8 }
宏也没有形式参数,所以不能保证先计算参数的数值
所有代表数字的宏参数都应该用小括号包括起来。
  1 #include <stdio.h>
  2 #define SUB(x, y)   ((x) - (y))
  3 int main() {
  4     printf("%d\n", SUB(8, 3));  // 5
  5     printf("%d\n", 20 - SUB(8, 3)); // 15
  6     printf("%d\n", SUB(10, 5 - 2)); // 7
  7     return 0;
  8 }

20170425