【C语言】static typedef define 结构体用法及指针理论

一、static

static用来修饰局部变量,全局变量和函数

局部变量:

#include<stdio.h>
void xyz()
{
	static int a = 1;
	a++;
	printf("%d", a);
}
int main()
{
	int i = 0;

	while (i < 10) {
		xyz();
		i++;
	}
	return 0;
}
//结果是234567891011

可以看出static修饰a后,a一直存在,出函数后并不销毁,而且不能重新定义赋值

修饰全局变量:使得这个全局变量只能在自己所在的源文件内部可以使用,其他源文件不能使用

修饰函数:使得函数只能在自己所在源文件使用

二、typedef类型重命名

int main()
{
	typedef unsigned int u_int;
	unsigned int num = 1;//结果是1
	printf("%d\n", num);
	u_int b = 1;//结果是1
	printf("%d", b);
}

可以看出 typedef unsigned int u_int;可以将unsigned int num这种冗长的定义替换为自定义的定义u_int。

三、define

定义常数:#define MAX 1000

定义宏:

#define ADD(X,Y) X+Y
int main()
{
	printf("%d", 4 * ADD(2, 3));//结果是11
	return 0;
}

可以看出 ADD(2,3)直接替换为 4*2+3 所以应该注意括号

四、结构体

struct Stu {
	char name[20];
	int age;
	double score;
};
int main()
{
	struct Stu s = { "张三",20,85.5 };//结构体的创建和初始化
	printf("%s %d %lf\n", s.name, s.age, s.score);
	struct Stu* ps = &s;
	printf("%s %d %lf\n", (*ps).name, (*ps).age, (*ps).score);
	printf("%s %d %lf\n", ps->name, ps->age, ps->score);

	return 0;
}

在主函数外可建议结构体,面向复杂体,设置多个相关变量

struct 结构体名 变量名 = {.......};//初始化公式

printf("%s %d\n", 变量名.字符变量名, 变量名.整形变量名);//输出方式

也可以取出结构体指针,从而实现多种输出方式

五、指针理论

在32位系统中   

                       0000 0000 0000 0000 0000 0000 0000 0000

                                             .。。。。。。。

                      1111 1111 1111 1111 1111 1111 1111 1111 

共2^32次方个二进制数都可以作为编号,在内存中给予变量一个地址

一个字节是一个内存单元,然后分配地址

int a=10;//a在内存分配4个字节

&a只拿出第一个字节的地址

int* pa=&a;//pa存放地址,*说明pa是指针变量

char*   short*   int*  long*.............大小都是4个字节

上一篇:ES6 类的学习(三) --- class静态属性和静态方法


下一篇:9年经验,总结SEO职业瓶颈