21.12.19初识C语言

Talk is cheap,show the code.

目录

操作符

static静态

#define定义常量和宏

指针


操作符

/除

7/2==2(整数除法两端都是整数,小数点直接舍去不会四舍五入)

7.0/3==2.333333 或写成 7/3.0(小数除法两段有一个数是小数)

%求余 取模

7%3==1

一个等号是赋值,两个等号是等于。

static静态

修饰变量(局部,全局)和函数

1.static修饰局部变量

进入作用域创建,出作用域销毁 static修饰局部变量的时候,局部变量就变成了静态局部变量,出了局部范围不会被销毁,下一次进入函数依然存在

因为static修饰的局部变量是存储在静态区的

内存 分为 栈区,堆区,静态区

栈区 -局部变量 函数的参数

堆区 -动态内存开辟的 malloc realloc calloc free

静态区 -(特点:出了范围不被销毁)静态变量 全局变量(生命周期很长)

静态区中的数据生命周期与程序的生命周期是一致的,程序结束,静态的生命周期也就结束了。

作用:

修饰局部变量时,实际改变的是存储位置,本来一个局部变量放在栈区,被static修饰就放在静态区。 从而导致,出了作用域依然存在,生命周期没有结束。

2.static修饰全局变量

在整个工程里都可以使用(无论创建多少个源文件)

extern是用来声明外部(其他源文件)符号

作用:

一个全局变量本来是具有外部链接属性的,但被static修饰之后,外部链接属性就变成了内部链接属性,只能在自己所在的源文件内部使用,不能在其他文件内部使用。

(使用上会感觉作用域变小了)

3.static修饰函数

作用:

一个函数本来是具有外部链接属性的,但是被static修饰后,外部链接属性就变成内部链接属性,这时这个函数只能在自己所在的源文件内部使用,在其他文件里是无法使用的。

(使用上会感觉作用域变小了)

#define定义常量和宏

预编译-编译-汇编-链接-运行

1.#define定义常量

#define MAX 1000 
//#define STR "hello bit" 
int main()
 { int m=MAX; 
printf("%dn",m); 
//printf("%sn",STR); 
return 0; }

打印出1000 或者hello bit

预编译会吧MAX全部替换成1000

内容替换

2.#define定义宏

//函数的实现
int get_max(int x, int y)
{
    //int z=0;
    //z=(x>y?x:y);
    //return z;
    
    return (x>y?x:y);//简单写法
}

int main()
{
    int a=10;
    int b=20;
    
    int m=get_max(a,b);
    printf("较大值:%dn",m);
    return 0;
}

//#define定义宏
#define MAX(x,y) ((x)>(y)?(x):(y))
int main()
{
    int a=10;
    int b=20;
    
    int m=MAX(a,b);
    printf("较大值:%dn",m);
    return 0;
}

宏名一般全大写,宏没类型也没返回类型

宏体可以多条语句

指针

内存是电脑上重要的存储器

一个内存单元大小是一个字节

内存单元的编号如何产生?-->-->

32位:32根地址线/数据线

地址线-电线-通电

电信号转换成数字信号 0/1

内存单元是有编号的,编号就是内存单元的地址。

int main()
{
int a=10;
printf("%pn",&a);//%p打印地址
return 0;
}

指针其实就是个地址,一个编号

//存地址
int main()
{
    int a=10;
    int* pa=&a;//pa 是用来存地址的,所以我们把pa叫指针变量
    //char ch='w':
        //char* pc=&ch;
        *pa=100;//*解引用操作符
        printf("%d",a);//100

       return 0;
    }

*-->pa是指针变量(专门用来存放地址)

int-->pa指向的对象是int类型的

*pa 通过pa中存放的地址,找到它所指向的对象

&取地址操作符

*解引用操作符

指针变量的大小

用sizeof计算

指针大小取决于平台(地址的大小)

32位平台:

不管什么类型都是4个字节 4byte

64位平台: 8byte

描述复杂类型

struct结构体关键字

用{}来初始化

//类型

typedef struct Stu

{

	char name[20];//名字-字符串

	int age;      //年龄 - 整数

	char sex[5]; //性别 - 字符串

	char id[20];//学号 - 字符串

}Stu;



void Print(struct Stu* ps)

{

	//printf("%s %d %s %sn", (*ps).name, (*ps).age, (*ps).sex, (*ps).id);

	printf("%s %d %s %sn", ps->name, ps->age, ps->sex, ps->id);

	//-> 结构成员访问操作符

	//结构体指针->结构体成员

}



int main()

{

	//结构体变量

	struct Stu s1 = {"张三", 18, "男", "2021060701"};//学生1

	struct Stu s2 = {"如花", 45, "女", "2021060702"};//学生2

	Stu s3 = {0};



	//输入结构体数据

	scanf("%s %d %s %s", s1.name, &(s1.age), s1.sex, s1.id);



	//直接打印的

	printf("%s %d %s %sn", s1.name, s1.age, s1.sex, s1.id);

	//. 结构成员访问操作符

	//结构体变量.结构体成员

	

	//使用函数打印

	Print(&s2);

	return 0;

}


本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>