初识C语言第四课

关系操作符

>
>=
<
<=
!= 用于测试”不相等“
== 用于测试”相等“

逻辑操作符

&& 逻辑与
|| 逻辑或

条件操作符

exp1?exp2:exp3

逗号表达式

exp1,exp2,exp3,……,expN

下标引用、函数调用和结构成员

[]   ()   .   ->

常见的关键字

auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while

关键字static

static修饰局部变量的时候
本来一个局部变量是存在栈区上的,如果被static修饰就存储到了静态区了
static修饰局部变量改变了变量的存储类型(位置),使得这个静态变量的生命周期变长了,直到程序结束才结束
但作用域不变

static修饰全局变量
全局变量具有外部链接属性,所以在其他源文件内部依然可以使用(方法要正确)
static修饰全局变量,改变了这个全局变量的链接属性,由外边链接属性变成了内部链接属性
这个静态变量只能在自己所在的源文件内部使用,不能在其他源文件内部使用
感觉像是作用域变小了

static修饰函数
static修饰函数和static修饰全局变量一样的
函数是具有外部链接属性的,但是被static修饰,就变成了内部链接属性
使得这个函数只能在自己所在的源文件内部使用,不能在其他文件内部使用的

栈区:局部变量、形式参数 。临时作用的变量都是在栈区,栈区上的变量的特点:进入作用域创建,出了作用域销毁(还给操作系统)
堆区:动态内存分配 malloc calloc realloc free
静态区:全局变量,静态变量。静态区的变量特点:创建好后,直到程序结束后才销毁(还给操作系统)

#define定义常量和宏

#define M 100
int main()
{
	int arr[M] = { 0 };//100*4=400
	int m = M;
	printf("%d\n", sizeof(arr));//400
	printf("%d\n", M);
	printf("%d\n", m);
	return 0;
}
//宏
#define ADD(x,y)((x)+(y))

//函数
int Add(int x, int y)
{
	return x + y;
}

int main()
{
	int a = 10;
	int b = 20;
	int c = ADD(a, b);
	printf("%d\n", c);

	int d = Add(a, b);
	printf("%d\n", d);
	return 0;
}

结构体

//学生
struct Stu
{
	//学生的相关属性
	char name[20];//名字-字符串,一个汉字是2个字符的
	int age;//年龄
	char sex[5];//男 女 保密
};

struct Book
{
	char name[20];
	char author[10];
	float price;
};

int main()
{
	struct Stu s1 = { "zhangsan",20,"男" };
	struct Stu s2 = { "lisi",20,"男" };
	struct Stu s3 = { "wangwu",20,"男" };
	struct Stu s4 = { "cuihua",20,"男" };
	struct Book b = { "","peng",66.6f };
	printf("%s %s %f\n", b.name, b.author, b.price);
	return 0;
}

你可能感兴趣的:(c语言,算法,数据结构)