C语言学习第四课

一、常见关键字

1.C语言提供的,不能自己创建关键字

2.变量名不能是关键字

signed 有符号的、unsigned 无符号的、extern 是申明外部符号的、register 寄存器关键字、union联合体(共用体)、void 无

define、include不是关键字是预处理指令

二、typedef关键字

1.类型定义,可以理解为类型重定义

typedef unsigned int u_int;

int main()
{
	unsigned int num = 100;
	u_int num2 = 100;
	//这两段代码是一个意思。把一个复制类型简单化
	return 0;
}

三、static关键字

static是用来修饰变量和函数的
1. 修饰局部变量-称为静态局部变量
2. 修饰全局变量-称为静态全局变量
3. 修饰函数-称为静态函数
1.修饰局部变量
void test()          //空类型,不需要返回值
{
	int a = 1;       //test一共被调上去10次
	a++;
	printf("%d", a); //所以显示结果是十个2
}
int main()
{
	int i = 0;
	while (i < 10)
	{
		test();
			i++;
	}
	return 0;
}
void test()          //空类型,不需要返回值
{
	static int a = 1;   //通过静态修饰的变量,不会再函数执行完后销毁
	a++;
	printf("%d", a);    //所以显示结果是2-11
}
int main()
{
	int i = 0;
	while (i < 10)
	{
		test();
			i++;
	}
	return 0;
}

对比后得知,static修饰局部变量,改变了局部变量的生命周期(本质上改变了变量的存储类型)

2.static修饰全局变量,使得这个全局变量只能在自己所在的源文件(.c)内部可以使用,其他源文件不能使用。

3.static修饰函数,使得函数只能在自己所在的源文件内部使用,不能再其他源文件内部使用,本质上static是将函数的外部链接属性变成了内部链接属性(和修饰全局变量一样)。

四、#define定义常量和宏

define是一个预处理指令

1.define定义符号

#define max 1000

int main()
{
	printf("%d\n", max);
	return 0;
}

 2.define定义宏

#define add(x,y) ((x)+(y))
int main()
{
	printf("%d\n", 4 * add(2, 3));
	return 0;
}

五、初识指针

1.每个内存单元的大小是1个字节byte,内存单元进行编号,这些编号称为该内存单元的地址

int main()
{
	int a = 10;         //a再内存中分配的空间是4个字节
	printf("%p\n", &a); //%p专门用来打印地址
	int * pa = &a;            //pa是用来存放地址的,再c语言中叫指针变量
	//*说明pa是指针变量,存放的是数据地址
	//int说明pa指向的对象是int类型的
	return 0;
}

2.指针实例

int main()
{
	int a = 10;        
	int* pa = &a;
	*pa = 20;      //*是解引用操作,*pa就是通过pa的地址找到a
	printf("%d\n", a);
	return 0;
}

3.指针的大小

指针的大小是相同的,在32位平台是4个字节,64位平台是8个字节

int main()
{
	printf("%d\n", sizeof(char*));
	printf("%d\n", sizeof(int*));
	printf("%d\n", sizeof(short*));
	printf("%d\n", sizeof(float*));
	return 0;
}

六、结构体

1.结构体的初始化

struct Stu             //创建一个学生
{
	char name[20];     //成员变量
	int age;
	double score;
};
int main()
{
	struct Stu s = { "皮皮虾",20,92.5 }; //结构体的创建和初始化
	printf("%s %d %lf\n", s.name, s.age, s.score);
	struct Stu * ps = &s;    //struct Stu是指针类型
	printf("%s %d %lf\n", (*ps).name, (*ps).age, (*ps).score );
	printf("%s %d %lf\n", ps->name, ps->age, ps->score);
	//2、3方法相同,使用方法结果指针体-> 成员变量名
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值