C 语言回顾

2018-03-12  本文已影响10人  iChuck
  1. 当你写下面代码发生了什么
 least = MIN(*p++, b);
 
 结果是:((p++) <= (b)? (p++): (*p++)) 这个表达式会产生副作用,指针 p 会3次++自增操作。
  1. 用预处理指令#define 声明一个常数,用表示1年中有多少秒(忽略闰年问题)
#define SECONDS_PER_YEAR (365 * 24 * 60 * 60)UL (UL 表示无符号整形)
  1. 写一个标准的宏MIN
#define MIN(A,B) ((A) <= (B) ? (A) : (B))
  1. define 和 const 区别

#define 定义宏的指令,
    是程序在预处理阶段将所有#define 定义的内容进行替换。
    因此程序在运行时,常亮中没有用#define 所定义的宏,系统不为它分配内存,
    而且在编译阶段不会检查数据类型,出错率大一些。
    #define 定义的表达式要注意边缘效应
    
    #define N 2 + 3
    int a = N / 2; // a 的值3.5,

const 定义的常量,在程序运行时是存放在常量列表中,系统会为它分配内存,而且在编译时进行类型检查。
  1. 关键字 volatile 有什么含义?
  1. 字符串拷贝 sprintf、strcpy、memcpy,请问些函数有什么区别
  1. static 关键字的作用
  1. 关键字 const
  1. 堆栈
  1. 数组和指针的区别
  1. 引用和指针的区别
  1. 用变量 a 给出下面定义
- 一个整数
- 一个指向整型类型的指针
- 一个指向指针的指针,它指向的指针是指向一个整型数
- 一个有10个整数型的数组
- 一个有10个指针的数组,该指针是指向一个整数型的。
- 一个指向有10个整型数数组指针。
- 一个指向函数的指针,该函数有一个整型参数并返回一个整型数。
- 一个有10个指针的数组,该指针指向一个函数,该函数有一个整形参数并返回一个整型数。

* int a;
* int *a;
* int **a;
* int a[10];
* int *a[10];
* int (*a)[10];
* int (*a) (int);
* int (*a[10])(int);
  1. 内存分区情况
上一篇 下一篇

猜你喜欢

热点阅读