感谢比特讲师! ​​来自B站的教学视频​

第二节课也不难耶

十一.关键字(不能和变量名冲突)

auto 局部变量前都有auto,但通常省略

break

case

const 常变量

enum 枚举

extern 引入外部符号

goto

register 寄存器

struct 结构关键字

union 联合体/共用体

typedef 类型定义

volatile

static

举个栗子:

c语言入门(2)_#define (原图来自教学视频)

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;
}

//宏的定义
#define Max(X>Y) (X>Y?X: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;
}