期末满分的密码
Posted INSTUDING
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了期末满分的密码相关的知识,希望对你有一定的参考价值。
目录
关键字static
#define 定义常量和宏
粗略讲解数据的储存
源文件变成可执行文件的大概过程
数据的储存
在内存大致可以分为
栈区,堆区,静态区
栈区(储存局部变量,函数形参)
堆区(动态内存的储存)
静态区(储存静态变量,全局变量)
其中静态区数据的生命周期为整个程序的生命周期
源文件变成可执行文件的大概过程
源文件——预处理——编译——汇编——链接——可执行文件
1.static (静态的意思)可以修饰局部变量,全局变量,函数。
修饰局部变量(可以使局部变量的生命周期变长)(本质上是改变了数据储存的位置,从栈区变到了静态区,数据出了它的作用域不被销毁)
如:
#include <stdio.h>
void test()
static int a=1;//此处a为局部变量
a++;
printf("a=%d\\n",a);
int main()
int i=0;
while(i<5)
test();
i++;
return 0;
输出的结果是a=2,3,4,5,6。如果把static去掉则输出的结果是:2,2,2,2,2。
所以说明static修饰局部变量时使局部变量的生命周期变长了。
2,修饰全局变量 (改变了全局变量的作用域——让静态的全局变量只能在它自己的源文件中使用,出了该文件在另一个源文件中就不能使用)(本身全局变量是由外部链接属性的,但被static修饰之后不具备外部链接,变成了内部链接属性,其只能在自己的源文件中进行使用,在另一个源文件中无法使用)
如:
一个文件
#include <stdio.h>
int main()
extern int a;
printf("%d\\n", a);
return 0;
另一个文件
static int a = 10;
编译器会报错,但如果去掉static则可以编译成功,打印的结果为10.
修饰函数:改变了函数的链接属性
(static修饰函数与修饰全局变量差不多,会使外部链接属性变成内部链接属性)
如:文件1
#include <stdio.h>
int main()
extern sum();
int c = 0;
c = sum(3, 6);
printf("c=%d\\n", c);
return 0;
文件2
static int sum(int a, int b)
int z = 0;
z = a + b;
return z;
其中运行过程中会报错,就是上面我说的改变了文件的链接属性;但是如果去掉static则可以运行。
#define 定义常量和宏
#define 定义常量在前面的博客中已经提过
这是一般的定义函数
//这是一般的定义函数
#include <stdio.h>
int MAX(int x, int y)
if (x>y)
return x;
else
return y;
int main()
int a=10,b=11;
int c = MAX(a,b);
printf("c=%d\\n", c);
return 0;
这是#define 的宏
#include <stdio.h>
#define MAX(x,y) (x>y?x:y)
int main()
int a = 10, b = 11;
int max = MAX(a, b);
printf("max=%d", max);
return 0;
注意define 并不是关键字,它是预处理指令
预处理指令从#开始
以上是关于期末满分的密码的主要内容,如果未能解决你的问题,请参考以下文章
HTML5期末大作业:餐饮美食网站设计——咖啡(10页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 咖啡网页设计 美食餐饮网页设计...(代码片段
计算机操作系统实验指导 (第3版) 第四篇 操作系统学习指导和习题解析 《操作系统》课程期末考试试卷A