【C语言入门学习】[2]初识C语言 02

2024.1.10更新

常见操作符 关键字(2)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

//1.static 修饰局部变量
//2.static 修饰全局变量
//3.static 修饰函数

extern int g_val;//声明外部变量
//static int g_val = 100; //static 修饰全局变量使得全局变量只能在自己所在的源文件内部使用
//extern int g_val;报错

//全局变量,在其他源文件内部可以被使用,是因为全局变量具有外部链接属性
//但是被static修饰之后,就变成了内部链接属性,其他源文件就不能链接到这个静态的全局变量了

//static int Add(int x, int y)
//{
// return x + y;
//}
//static 修饰函数,使得函数只能在自己的源文件内部使用,不能在其他源文件内部使用,
//本质上:static是将函数的外部链接属性变成内部链接属性(与static修饰全局变量类似)

void test()
{
//int a =1; 10个2
static int a = 1; //2到11 , a 出函数体不会销毁,再次进入函数体保持上一次的值
a++;
printf("%d\n", a);
}

//声明函数
extern int Add(int, int);//定义在test01.c中

int main()
{
int i = 0;
while (i < 10)
{
test();
i++;
}
printf("%d\n", g_val);
int a = 10;
int b = 20;
int sum = Add(a, b);
printf("sum = %d", sum);
return 0;
}
//static修饰局部变量,改变了局部变量的生命周期(本质上是改变了变量的存储类型)

define定义常量和宏

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

//define定义符号
#define MAX = 1000

//define定义宏
//#define ADD(X,Y) X+Y //printf结果为11
//#define ADD(X,Y) (X+Y)错误写法
#define ADD(X,Y) ((X)+(Y)) //模式替换
#include<stdio.h>

int main()
{
printf("%d\n", 4 * ADD(2, 3));//4*2+3
//宏是实现替换的
return 0;
}

指针

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//一个内存单元是一个byte:字节
//一个byte由8个bit构成,1个bit为一个地址,所以一共8个地址

int main()
{
int a = 100;
printf("%p\n", &a);//%p用于打印地址;
int *pa = &a;//pa是用来存放地址的,在c语言中pa叫指针变量
//* 说明 pa是指针变量
//int 说明pa执行对象是int类型的
char ch = 'w';
char* pc = &ch;

*pa = 20;//*解引用操作,*pa就是通过pa里面的地址,找到a
printf("%d\n", sizeof(char*));
printf("%d\n", sizeof(short*));
printf("%d\n", sizeof(int*));
printf("%d\n", sizeof(long*));
printf("%d\n", sizeof(long long*));
printf("%d\n", sizeof(float*));
printf("%d\n", sizeof(double*));
//32位机器,4个字节
//64位机器,8个字节
return 0;
}

结构体

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

//结构体可以让c语言创建出新的类型出来
//创建一个学生
struct Stu
{
char name[20];//名字
int age; //年龄
char sex[5];//性别
char id[15];//学号
};

int main()
{
//结构体的初始化
struct Stu s = { "张三",18,"男","20241574" };
printf("名字:%s 年龄:%d 性别:%s 学号:%s\n", s.name, s.age, s.sex, s.id);

//操作符:->
struct Stu* ps = &s;
printf("名字:%s 年龄:%d 性别:%s 学号:%s\n", ps->name, ps->age, ps->sex, ps->id);
return 0;
}

总结:

c语言的基本语法初步了解以及补充完成