常见关键字
关键字 | 意义 |
---|---|
auto | 局部变量(自动储存) |
break | 无条件退出程序最内层循环 |
case switch | 语句中选择项 |
char | 单字节整型数据 |
const | 定义不可更改的常量值 |
continue | 中断本次循环,并转向下一次循环 |
default switch | 语句中的默认选择项 |
do | 用于构成do…while循环语句 |
double | 定义双精度浮点型数据 |
else | 构成if…else选择程序结构 |
enum | 枚举 |
extern | 在其它程序模块中说明了全局变量 |
float | 定义单精度浮点型数据 |
for | 构成for循环语句 |
goto | 构成goto转移结构 |
if | 构成if…else选择结构 |
int | 基本整型数据 |
long | 长整型数据 |
register | CPU内部寄存的变量 |
return | 用于返回函数的返回值 |
short | 短整型数据 |
signed | 有符号数 |
sizoef | 计算表达式或数据类型的占用字节数 |
static | 定义静态变量(延长变量生命周期) |
struct | 定义结构类型数据 |
switch | 构成switch选择结构 |
typedef | 重新定义数据类型 |
union | 联合类型数据 |
unsigned | 定义无符号数据(是正的) |
void | 定义无类型数据(无返回值) |
volatile | 该变量在程序中执行中可被隐含地改变 |
while | 用于构成do…while或while循环结构 |
typedef 重新定义数据类型
typedf unsigned int uint//意为给unsigned int 这个数据类型重新起名为uint
//unsigned int a = 10;
uint a = 10;
static 延长变量生命周期
3种用法:
1.修饰局部变量 但作用域还是局部的
2.修饰全局变量
3.修饰函数
void test()
{
static int b = 1//加上static,表示b出了作用域仍不会被销毁,直到程序结束
//第二次调用会跳过这行
//int b = 1;//没有static,b出了作用域会被销毁
b++;//b=b+1c
printf("%d",b);
}
int main()
{
int a = 1;
while (a < 3)
{
test ();
a++;//a=a+1
}
return 0;
}
static修饰函数也一样
#define定义常量和宏
#define MAX = 100;//定义常量
//定义宏
#define ADD(X,Y) ((X)+(Y))//ADD是宏
//宏是替换式的工作,不是调用
int main()
{
int a = 10;
int b = 20;
int sum = ADD(a,b);
//int sum = ((a)+(b));//替换后
printf("%d",sum);
return 0;
}
指针
1.每个内存单元的大小为1个字节,为了能够有效的访问到内存的每个单元,
就给内存单元进行了编号,这些编号被称为该 内存单元的 地址
%s - 打印字符串
%c - 打印字符
%d - 打印有符号的整数
%f - 打印单精度浮点数
%lf - 打印双精度浮点数
%p - 打印地址(地址是16进制的)
地址有指向性也可以成为指针
int main()
{
int a = 10;
&a//是一个数值
int* pa = &a;//int*代表的是int型的指针
//pa叫做指针变量,pa的内容就是a的地址
*pa = 20;
//*pa等价于a,这行代码表示a被赋值了
printf("%d",a);//打印出来a是20
//*是解引用操作符
}
int * 中的 * 表示pa为指针变量
int * 中的 int表示pa指向的对象a的数据类型为int
指针变量大小
指针(地址)大小是根据多少位操作系统决定的
32位环境下,指针大小是4个字节(32bit就是4个字节)
64位环境下,指针大小是8个字节(64bit就是8个字节)
指针变量是用来存放地址的,所以指针变量大小为4个字节
int main()
{
char ch = 'w';
char* pc = &ch;
printf("%d",sizeof(pc));//打印出来为4
return 0;
}
#include <stdio.h>
int main()
{
printf("%d\n", sizeof(char *));
printf("%d\n", sizeof(short *));
printf("%d\n", sizeof(int *));
printf("%d\n", sizeof(double *));//打印出来后都为4
return 0; }
结构体(关键字struct)
复杂对象,不能用简单的类型直接描述需要用到结构体
结构体是组合类型,是自己创造的自定义类型、
//书 书名-价格-编号
struct BOOK
{
char name[20];//[]内不能为空
float price;
char id[20];//创建结构体
};//别忘记 ;
int main()
{
struct BOOK b = { "语文",30.0f,"D567876" };//float类型数字后要加f,double不用
//b是结构体变量
printf("书名:%s\n", b.name);//结构体变量.成员名
printf("价格:%f\n", b.price);
printf("编号:%s\n", b.id);
return 0;
}