目录
<1>.关键字typedef
<2>.关键字static
<3>.#define
<4>.指针
<5>.结构体
1.typedef
typedef
顾名思义是类型定义,这里应该理解为类型重命名
简单地说就是将数据类型名称改成自己想用的名字
代码:
#include<stdio.h>
typedef unsigned int u_int
;
/
/
将
unsigned int
重命名为
u_int,
所以
u_int
也是一个类型名
int main()
{
//unsigned int 无符号整型
unsigned int num=100;
u_int num1=200;
return 0;
}
2.static
static----静态变量
static的3个作用:
1.
修饰局部变量
-
称为静态局部变量
2.
修饰全局变量
-
称为静态全局变量
3.
修饰函数
-
称为静态函数
<1>..修饰局部变量
代码1:
#include<stdio.h>
void test()
{
int a=1;//a为局部变量
a++;
printf("%d",a);
}
int main()
{
int i=0;
while(i<10)
{
test();
i++;
}
return 0;
}
运行结果:

结果分析:
连续输出了10个2 原因:局部变量经过一个生命周期后会被销毁,等到进入下一个生命周期时,会重新开辟一个内存来存放局部变量,上一生命周期局部变量的值没有保存
代码2:
//
void 在这里表示不需要函数返回任何值
void test()
{
//a本来是局部变量的
//使用static修饰局部变量
static int a = 1;
a++;
printf("%d ", a);
}
int main()
{
int i = 0;
while (i < 10)
{
test();
i++;
}
return 0;
}
运行结果:

<2>.
修饰全局变量
如果想使用来自其他文件(外部文件)的 全局变量,先要声明一下
extern是一个关键字,是专门用来声明外部符号的

全局变量前面加了static后
分析:
<3>.修饰函数
没用static修饰前
分析:
加了static后

3.
#define
定义常量和宏
<1>
#define 定义标识符常量
#include<stdio.h>
#define M 100
#define STR "hehe"
int main()
{
printf("%d\n", M);
printf("%s\n", STR);
return 0;
}
<2>
#define 定义宏
#include<stdio.h>
#define ADD(x,y) ((x)+(y)) //宏的定义
int main()
{
int a=10;
int b=20;
i
nt sum=ADD(a,b);
printf("%d",sum);
return 0;
}

4.
指针
说到指针就必须提到内存
<1>内存
内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的 。
所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是
1
个字节
。
为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该
内存单元的地
址
。
<2>
变量是创建内存中的(在内存中分配空间的),每个内存单元都有地址,所以变量也是有地址的。
如何取出变量的地址
#include<stdio.h>
int main()
{
int a = 10;
&a;
//取出a的地址
//注:这里a的4个字节,每个字节都有地址,取出的是第一个字节的地址(较小的地址)
printf("%p",&a);
//
打印地址,
%p
是以地址的形式打印
return 0;
}

那地址如何存储,需要定义指针变量。
int
num
=
10
;
int *
p
= &
num
;
;
//p
为一个整形指针变量 指针变量用来存储地址
指针的使用实例:
#include <stdio.h>
//& - 取地址操作符
//* - 解引用操作符/间接访问操作符
int
main
()
{
int
num
=
10
;
int *
p
= &
num
;
//p是用来存放地址的,所以我们把p称为指针变量
*
p
=
20
;
//*的解引用操作符,*p的意思就是通过p中的值,找到p所指向的对象,也就是说*p就是num
return
0
;
}
<3>
指针变量的大小
指针大小在
32
位平台是
4
个字节,
64
位平台是
8
个字节。
#include <stdio.h>
//
指针变量的大小取决于地址的大小
//32
位平台下地址是
32
个
bit
位(即
4
个字节)
//64
位平台下地址是
64
个
bit
位(即
8
个字节)
int
main
()
{
printf
(
"%d\n"
,
sizeof
(
char *
));
printf
(
"%d\n"
,
sizeof
(
short *
));
printf
(
"%d\n"
,
sizeof
(
int *
));
printf
(
"%d\n"
,
sizeof
(
double *
));
return
0
;
}
在32平太上

在64平台

5.
结构体
结构体是
C
语言中特别重要的知识点,结构体使得
C
语言有能力描述复杂类型。
比如描述学生,学生包含:
名字
+
年龄
+
性别
+
学号
这几项信息。
这里只能使用结构体来描述了
<1>介绍两个操作符
.
结构体成员访问的操作符
用法:结构体变量.结构体成员
->
结构体成员访问的操作符
用法:结构体指针->结构体成员
//结构体类型的定义
struct Stu
{
//结构体的成员
char name[20];
int age;
char sex[10];
}
;
#include <string.h>
int main()
{
//创建结构体变量,并且初始化
struct Stu zhangsan = {"张三", 30, "男"};
struct Stu lisi = {"李四", 24, "保密"};
//打印结构体的数据
printf("%s %d %s\n", zhangsan.name, zhangsan.age, zhangsan.sex);
printf("%s %d %s\n", lisi.name, lisi.age, lisi.sex);
//->这个操作符
struct Stu * pl = &lisi;
printf("%s %d %s\n", (*pl).name, (*pl).age, (*pl).sex);
printf("%s %d %s\n", pl->name, pl->age, pl->sex);
return 0;
}
