感谢比特讲师! 来自B站的教学视频
第二节课也不难耶
十一.关键字(不能和变量名冲突)
auto 局部变量前都有auto,但通常省略
break
case
const 常变量
enum 枚举
extern 引入外部符号
goto
register 寄存器
struct 结构关键字
union 联合体/共用体
typedef 类型定义
volatile
static
举个栗子:
(原图来自教学视频)
int 定义的变量是有符号的,及signed int ,而signed 通常省略。
unsigned int num = -1; //num无符号 认为是正数
typedef unsigned int u_int; //把 unsigned int 名字重新定义为u_int
void test()
{
int a = 1;
a++;
printf("%d\n", a);
}
int main()
{
int i = 0;
while(i<5)
{
test();
i++;
}
return 0;
}
//结果 22222
static修饰局部变量,局部变量生命周期变长。
static修饰全局变量,改变变量作用域,让静态全局变量只能在自己所在的源文件内部使用,出了源文件就不能使用了。
static修饰函数,也是改变了函数的作用域(这种说法不准确)
static修饰函数,改变函数的链接属性(外部链接属性-->内部链接属性)
void test( )
{
static int a = 1;//a是一个静态局部变量
a++;
printf("%d\n", a);
}
int main( )
{
int i = 0;
while(i<5)
{
test();
i++;
}
return 0;
}
//结果 23456
#define定义标识符常量
#define Max 100
#define可以定义宏-带参数
int max(int x, int y)
{
if (x>y)
return x;
else
return y;
}
//宏的定义
int main()
{
int a = 10;
int b= 20;
max=MAX(a,b); //max=(a>b?a:b)
printf("max=%d\n",max);
return 0 ;
}
十二.指针
int a= 10;//4个字节
int* p=&a;//取地址。p是指针变量,p的类型是int*。
printf("%p\n",&a); //&a 取地址 打印结果以16进制显示,0021FD64
printf("%p\n",p);//显示结果和上一行一样。
int a=10;
int* p=&a;//取地址。p是指针变量,p的类型是int*
*p=20;//*--解引用操作符
printf("a=%d");//显示结果a=20
int main()
{
double d=3.14;
double* pd=&d; //指针大小在32位平台上显示4,即4个字节,在64位平台上显示
的是8
printf(%d\n, sizeof(pd));
}
十三.结构体:描述复杂对象
/***代码示例***/
struct Book
{
char name[20]; //程序设计
short price; //55
}; //分号不可缺少
int main()
{
//利用结构体类型 创建一个该类型的结构体变量
struct Book b1 = {"程序设计",55};
struct Book* pd=&b1;
//利用pd打印出我的书名和价格
printf("%s\n",(*pd). name); //. 结构体变量.成员
printf("%s\n",(*pd). price);
//更简易的写法
printf("%s\n", pd->name); //- 结构体变量->成员
printf("%S\n",pd->price);
printf("书名:%s\n", b1.name);
printf("价格:%s\n", b1.price);
b1.price = 15;
printf("修改后的价格:%d\n", b1.price);//打印结果15
strcpy(b1.name,"c++程序设计");//strcpy-string copy-字符串拷贝-库函数-string.h
printf("%s\n", b1.name); //打印结果修改为c++程序设计
return 0;
}