a. 引用外部变量
如果需要在一个源文件中引用另一个源文件中定义的变量,只需要在引用的文件中将变量加上 extern 关键字的声明即可
- addtwonum.c
#include
// 外部变量声明
extern int x;
extern int y;
int addtwonum()
{
return x + y;
}
- review.c
#include
// 定义两个全局变量
int x = 1;
int y = 2;
int addtwonum();
int main(void)
{
int result;
result = addtwonum();
printf("result 为: %d\n", result);
return 0;
}
b. 定义常量
- 使用 #define 预处理器
#define identifier value
- 使用 const 关键字
const type variable = value;
c. 杂项运算符
运算符 | 描述 | 实例 |
---|---|---|
sizeof() | 返回变量的大小。 | sizeof(a) 将返回 4,其中 a 是整数。 |
& | 返回变量的地址。 | &a; 将给出变量的实际地址。 |
* | 指向一个变量。 | *a; 将指向一个变量。 |
? : | 条件表达式 | 如果条件为真 ? 则值为 X : 否则值为 Y |
int a = 4;
short b;
double c;
int* ptr;
// sizeof 运算实例
printf("变量 a 的大小 = %lu\n", sizeof(a));
printf("变量 b 的大小 = %lu\n", sizeof(b));
// & 和 * 运算符实例
ptr = &a; // ptr 现在包含 'a' 的地址
printf("a = %d\n", a);
printf("*ptr = %d\n", *ptr);
// 三元运算符
a = 10;
b = (a == 1) ? 20 : 30;
printf("b 值 是%d \n", b);
d. vs2019 使用 scanf 读取遇到的错误
C6031错误
// 解决方法 将 scanf 换成 scanf_s
int buy;
scanf_s("%d", &buy);
printf("buy = %d ", buy);
C4996错误
[解决方法](https://www.cnblogs.com/xmdykf/p/12317594.html
e. 全局变量与局部变量在内存中的区别
- 全局变量保存在内存的全局存储区中,占用静态的存储单元;
- 局部变量保存在栈中,只有在所在函数被调用时才动态地为变量分配存储单元。
f. 枚举变量的定义
- 先定义枚举类型,再定义枚举变量
enum DAY{ MON=1, TUE, WED, THU, FRI, SAT, SUN};enum DAY day;
- 定义枚举类型的同时定义枚举变量
enum DAY{ MON=1, TUE, WED, THU, FRI, SAT, SUN} day;
- 省略枚举名称,直接定义枚举变量
enum{ MON=1, TUE, WED, THU, FRI, SAT, SUN} day;
g. 函数指针
通常我们说的指针变量是指向一个整型、字符型或数组等变量,而函数指针是指向函数。
函数指针可以像一般函数一样,用于调用函数、传递参数。
// 声明
typedef int (*fun_ptr)(int,int); // 声明一个指向同样参数、返回值的函数指针类型
#include
int max(int x, int y)
{
return x > y ? x : y;
}
int main(void)
{
/* p 是函数指针 */
int (* p)(int, int) = & max; // &可以省略
int a, b, c, d;
printf("请输入三个数字:");
scanf("%d %d %d", & a, & b, & c);
/* 与直接调用函数等价,d = max(max(a, b), c) */
d = p(p(a, b), c);
printf("最大的数字是: %d\n", d);
return 0;
}