又是被隔离的一天,在寝室快疯了,唉还要多久才解封啊,,,受不了了
这是我的github:718768154 (cc over) · GitHub
以及我的gitee:太晚 (yibaichen123) - Gitee.com
小白初学者,愿接受大佬指教噢
总结一下昨天所学的小知识
1.关键字 typedef
//int main()
//{
// //int float;//关键字不能被定义成变量
// typedef unsigned int u_int;
// //typedef - l类型定义 - 类型重定义
// unsigned int nnum = 20;//全写
// u_int num2 = 20;//缩写
// //张三 - 小三
// return 0;
//}
2.关键字static
static
是用来修饰变量和函数的
1.
修饰局部变量-称为静态局部变量
//代码1
#include <stdio.h>
void test()
{
int i = 0;
i++;
printf("%d ", i);
}
int main()
{
int i = 0;
for(i=0; i<10; i++)
{
test();
}
return 0; }
//代码2
#include <stdio.h>
void test()
{
//static修饰局部变量
static int i = 0;
i++;
printf("%d ", i);
}
int main()
{
int i = 0;
for(i=0; i<10; i++)
{
test();
}
return 0;
}
对比代码
1
和代码
2
的效果理解
static
修饰局部变量的意义。
结论:
static修饰局部变量改变了变量的生命周期
让静态局部变量出了作用域依然存在,到程序结束,生命周期才结束。
2.
修饰全局变量-称为静态全局变量
//代码1
//add.c
int g_val = 2018;
//test.c
int main()
{
printf("%d\n", g_val);
return 0; }
//代码2
//add.c
static int g_val = 2018;
//test.c
int main()
{
printf("%d\n", g_val);
return 0; }
代码
1
正常,代码
2
在编译的时候会出现连接性错误。
结论:
一个全局变量被
static
修饰,使得这个全局变量只能在本源文件内使用,不能在其他源文件内使
用。
3.
修饰函数-称为静态函数
//代码1
//add.c
int Add(int x, int y) {
return c+y; }
//test.c
int main()
{
printf("%d\n", Add(2, 3));
return 0;
}
//代码2
//add.c
static int Add(int x, int y) {
return c+y; }
//test.c
int main()
{
printf("%d\n", Add(2, 3));
return 0; }
代码
1
正常,代码
2
在编译的时候会出现连接性错误
.
结论:
一个函数被
static
修饰,使得这个函数只能在本源文件内使用,不能在其他源文件内使用。
剩余关键字后续课程中陆续会讲解。
3.#define 定义常量和宏
//define定义标识符常量
#define MAX 1000
//define定义宏
#define ADD(x, y) ((x)+(y))
#include <stdio.h>
int main()
{
int sum = ADD(2, 3);
printf("sum = %d\n", sum);
sum = 10*ADD(2, 3);
printf("sum = %d\n", sum);
return 0; }
4. 指针
4.1
内存
内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的 。
所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是
1
个节
。
为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该
内存单元的地
址
。
变量是创建内存中的(在内存中分配空间的),每个内存单元都有地址,所以变量也是有地址的。
取出变量地址如下:
#include <stdio.h>
int main()
{
int num = 10;
#//取出num的地址
//注:这里num的4个字节,每个字节都有地址,取出的是第一个字节的地址(较小的地址)
printf("%p\n", &num);//打印地址,%p是以地址的形式打印
return 0;
}