作用域
全局作用域和局部作用域和上一天的全局变量局部变量一样的区分,作用也和名字一样,局部作用域只能在printf函数下的{}而全局作用域则是整个源文件中都可以用到。
注:一般情况下全局作用域不会作用到本文件外的另一文件,除非是该源文件下的项目+extern函数
验证方法
#include <stdio.h>
int a = 1;
int main()
{
printf("1:%d\n", a);
printf("test")
{
printf("2:%d\n", a);
}
printf("3:%d\n", a);
return 0;
}
生命周期
局部变量的生命周期
易理解的方法
#include <stdio.h>
int main()
{
int a = 1;
[
printf("%d\n", a);
]
return 0;
}
这种输入方法是得不出a值的,因为在中括号[]内没有创建a的变量
所以可以用
#include <stdio.h>
int main()
{
int a = 10;
printf("1:%d\n", a);
[
int a = 20;
printf("2:%d\n", a);
]
return 0;
}
可以得出第一个a为10第二个a为20。
常量
'a',"abc",111.这种叫做变量。
而用函数const就可以将变量变为常变量,const用英文解释更舒服一点:恒定的。
虽然说用const将变量变成常变量但是本质上还是变量所以对于需要指示常量的函数用不了const指定的变量。
#include <stdio.h>
int main()
{
const int a = 1;
a = 2;
printf("%d\n", a);
return 0;
}
这里虽然a在后面被修改为2,但是前面的const已经将a"常"化了,所以会出现矛盾导致出错。
标识符常量,和上面一样#define修饰变量后如果后面再用代码修改a数据会矛盾出错。
枚举常量 enum函数
即为可以举例完的
#include <stdio.h>
enum when
{
Monday
Tuseday
Wednesday
Thusday
Friday
Saturday
Sunday
}
int main()
{
enum when s =Saturday//只能在上面枚举的选择
return 0;
}
字符’a‘,字符串"abc"结束标志\0
#include <stdio.h>
int main()
{
char test1[] = "aaa";
char test2[] = {'a','a','a'};
char test3[] = {'a','a','a','\0'};
printf("%s\n", test1);
printf("%s\n", test2);
printf("%s\n", test3);
return 0;
}
这是test2会出现乱码,因为字符串会自动编辑\0在结尾,而test3虽然不是字符串但人工添加了结束标志,而test2啥也没有计算机读取的时候因为还有剩余空间就会自动补充内容直至空间占满。
选择语句if
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
printf("你想要加入充满光明与荣耀的C教会吗?(0/1)");//0代表加入,1代表拒绝
int a = 0;
scanf("%d",&a);
if(a == 0)
printf("从入门到入坟");
else
printf("C语言都不学?赐入坟");
return 0;
}
我的教程上说if是选择语句,我倒觉得这玩意更像通关语句,因为if只有输入指定符号”0“时,才有一句话,而无论输入其它都是else的语句了(不知道是我功底太浅不会框定a的范围)。
循环语句while
while英文注释 当···的时候
#include <stdio.h>
{
int a = 0;
while(a<100000)
{
printf("摸鱼:%d\n", a);
a++;
}
if(a == 100000)
printf("摸大鱼");
return 0;
}
创建a的数值即为a刚开始的数值,创建完就会接while函数的第一步检测第二步增加,一直重复到if语句的达成条件。
数据计算 + - * / %
如果代码行数较少的情况下可以直接用
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d%d",&a,&b);
int sum = a + b;
printf("%d\n", sum)
return 0;
}
但是如果代码过大,每次都来这么串会导致头秃更快,所以以下的有必要
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int Add(int a,int b,int c,int d);
{
int e = 0;
e = (a + b + c)*d;
return e;
}
int main()
{
int a = 0;
int b = 0;
int c = 0;
int d = 0;
scanf("%d%d%d%d",&a,&b,&c,&d);
int sum = Add(a,b,c,d);
printf("%d\n", sum);
return 0;
}
这里可以解释为Add函数内需要用到(a,b,c,d)创建,同时设定计算公式,而最后的return e,是将计算结果e回退到Add函数中留待下面int sum = Add使用,因为上面是被框定的生命周期,所以下面需要重新创建a,b,c,d这几个数,同时用scanf函数调出所要计算的数据
数组
可以解释到上面if语句的框定a范围
#include <stdio.h>
int main()
{
int test1[10] = {0,1,2,3,4,5,6,7,8,9};//10表示该数组最大可容纳的元素数量,最高也是10。如果输入元素数量未达到最高可容纳的元素数量,C会自动用\0补充
int a = 0//记录a的起始值
while(a<9)
{
printf("%d\n",test1[a]);//输出内容为在test1的数组内a的值
a++;//也可以--,只不过会无线循环下去:开始值0→检测<9→输出内容→减1→框定最小为0→a=0→检测<9
}
return 0;
}