March 31

一.常见关键字

1.1基本介绍(​绿字之前学过的

// auto==自动
//int a = 10;//局部变量是==自动销毁,自动创建的自动变量,auto省略了
// break 循环和case语句中 应用
// continue 循环中用  
// ​​​conset 常变量​
// default 默认
// do while循环
// while循环
// ​​​enum 枚举常量​
// extern 引入外部符号,eg:全局变量的引用

C语言 -003_初试指针

//​ register​  ​寄存器关键字 ​用于使用极其频繁的变量,建议此变量放入寄存器。
//(计算机存取数据的地方:1硬盘,2.内存,3.高数缓存,4.寄存器) 访问速度加快,空间减小
// cpu-中央处理器,一般在寄存器拿数据,拿不到数据就依次向下访问,提高效率
// signed  unsigned 无符号变量
// 有符号数 eg:int定义的数是有符号的,全称是sigened int:
// ​​​sizeof操作符 计算占用空间的大小​
// static 静态的
// struct 结构体关键字
// switch语句
// typedef 类型定义
// union 联合体 共用体
// ​viod​ 空
// volatile 比较难,操作系统再讲

1.2几个关键字的应用(关键字与变量名不能一样,即产生冲突)

//typedef- 类型定义 -类型重定义

#include <stdio.h>
int main()
{
unsigned int num1 = 0;//无符号的int类型数据,代码太长了,简化一下
typedef unsigned int u_int;//将类型重命名为u_int,简单了写
u_int num2 = 10;
return 0;
}

//static 修饰作用

1.对局部变量
#include <stdio.h>

//test函数 ---注意函数体放上面
void test()
{
//int a =0;
static int a = 1;//静态的局部变量,让a不再初始化,
//即static修饰局部变量a时,a的生命周期变长
a++;
printf("a==%d\n", a);
}

//程序入口
int main()
{
//int i = 0;
while(i<5)
{
test();
i++;
}
return 0;
}

结果

C语言 -003_关键字_02


2.对不同文件下全局变量

C语言 -003_初试指针_03

3.对不同文件下函数

C语言 -003_#define_04

1.3 #define 定义宏==在标识符后面加个参数 

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

#define MAX 100;// 标识符常量
// #define 定义宏==在标识符后面加个参数 没有深讲
#define ADD(X,Y) (X>Y?X:Y)//有三目操作符

//Max函数
int Max(int x,int y)
{
if (x > y)
return x;
else
return y;
}


int main()
{
int a = 10;
int b = 20;
int max = 0;
int Hong = 0;
//函数方式
max = Max(a,b);
printf("max==%d\n", max);
//用宏的方式
Hong = ADD(a, b);
printf("Hong==%d\n",Hong);
return 0;

}

结果

C语言 -003_#define_05


二.初识指针

2.1内存与指针

// 必须搞清楚内存,再搞指针   

// 大内存要拆分成各个 小内存单元==地址空间

// 先给各个地址空间分配不同的地址编号,通过编号找这些地址空间==小内存单元

// 如何产生地址----- 怎么给小内存单元编号----

// 32位 和 64位计算机

// 具有32或64地址线==数据线

// 是线就要通电 通电就有正负电

// 正电==1  负电==0

// 32根线就有32对正负电,对应32位的二进制

0000 0000 0000 0000 0000 0000 0000 0000

0000 0000 0000 0000 0000 0000 0000 0001

0000 0000 0000 0000 0000 0000 0000 0010

...............

1111 1111 1111 1111 1111 1111 1111 1111

// 所以就可以产生2*32个编号,然后一个编号对应到一个小内存单元,就形成了地址编号

// 地址编号有了,就该看小内存单元的空间大小了----

// 一共有2*32个小内存空间

// 一个空间放一个字节==byte, bit话太小,kb太大,用计算器算一下就可以了

// 例: int a的局部变量a就向内存申请了四个字节存储数据,每个字节都有字节地址标号,所以可以看出 &取地址符 的作用就出来了。

//代码如下

#include <stdio.h>
int main()
{
int a = 10;
//用&取地址符,看a的地址
printf("%p\n", &a);
int*p = &a; //有一种变量专门用来存放地址的==指针变量 int*p
printf("%p\n", p);
//%p 这个是打印地址: 00000099523AF934
*p = 20; //含义是找到p地址的存放的值 改为20
//*--是一种解引用操作符
printf("new a ==%d\n", a);

return 0;
}

结果

C语言 -003_局部变量_06

C语言 -003_关键字_07

2.2指针简单应用

#include <stdio.h>
int main()
{
char ch = 'u';
char*pc = &ch;//指针类型的一个区分,int char类型
int val = 0;
printf("ch==%c\n",ch);
printf("pc地址==%p\n",pc);
printf("字符==%c\n", *pc);
*pc ='k';
printf("通过指针地址修改值==%c\n", ch);
printf("ch==%c\n", ch);
//*p是地址编号的存放 所以*p这个指针就用了4个字节
// 64位计算机就用了8个字节byte
printf("%d\n", sizeof(val));
printf("%d\n", sizeof(pc));//指针名字叫pc 类型是char
printf("%d\n", sizeof(ch));
//指针内存的大小与运行平台的配置管理器有关,可以修改

return 0;
}

结果

C语言 -003_#define_08