当前位置 博文首页 > Mr.Rui的博客:从0基础入门C语言(四)

    Mr.Rui的博客:从0基础入门C语言(四)

    作者:[db:作者] 时间:2021-08-24 18:46

    初识C语言(四)

    本章目录

    • 什么是C语言
    • 第一个C语言程序
    • 数据类型
    • 变量、常量
    • 字符串+转义字符+注释
    • 选择语句
    • 循环语句
    • 函数
    • 数组
    • 操作符
    • 常见关键字
    • define 定义常量和宏
    • 指针
    • 结构体

    十二、#define 定义常量和宏

    // #define 定义的标识符常量
    #define MAX 100
    
    int main()
    {
    	int a = MAX;  // 这里的MAX就是100,只有未来这个位置都是MAX,通通都是100
    	return 0;
    }
    
    
    // #define 可以定义宏 - 带参数
    // 函数定义方式
    int Max(int x, int y)
    {
    	if (x,y)
    		return x;
    	else
    		return y;
    }
    
    // 宏定义方式
    #define MAX(X,Y) (X>Y?X:Y)
    
    int main()
    {
    	int a = 10;
    	int b = 20;
    	// 函数的方式
    	int max = Max(a,b);
    	printf("max = %d\n",max);
    	
    	// 宏的方式
    	max = MAX(a,b);
    	// 在这块MAX的操作方式是: max = (a>b?a:b);
    	printf("max = %d\n",max);
    	return 0;
    }
    

    十三、指针

    内存

    内存是电脑上特别重要的存储器,计算机中所有程序的运行都是在内存中进行的。
    所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节
    为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址
    在这里插入图片描述
    & 取地址符
    代码:

    int main()
    {
    	int a = 10;
    	printf("%p\n,a");
    	return 0;
    }
    

    结果:
    00DDFB00

    取地址

    int main()
    {
    	int a = 10;
    	int* p = &a;
    	printf("%p\n", &a);
    	printf("%p\n", p);
    	return 0;
    }
    

    结果: 一致的
    00DDFB00
    00DDFB00

    int main()
    {
    	int a = 10;  // 申请了4个字节的空间
    	int* p = &a;  // p 是一个变量 -- 指针变量
    	//printf("%p\n", &a);
    	//printf("%p\n", p);
    	*p = 20; // --解引用操作符/间接访问操作符
    	printf("%d\n", a);
    	return 0;
    }
    

    结果是:20

    *p 解引用操作符

    int main()
    {
    	printf("%d\n", sizeof(char*));
    	printf("%d\n", sizeof(short*));
    	printf("%d\n", sizeof(int*));
    	printf("%d\n", sizeof(double*));
    	/*double d =  3.14;
    	double* pd = &d;
    	printf("%d\n", sizeof(pd));*/
    	/**pd = 5.5;
    	printf("%lf\n", d);
    	printf("%lf\n", *pd);*/
    	return 0;
    }
    

    指针大小在32位平台是4个字节,64位平台是八个字节

    x64平台
    在这里插入图片描述
    x86平台,也就是32位
    在这里插入图片描述

    十四、结构体

    我们学到现在接触了很多类型,比如:int。char,double…等;那么如何表示一个人呢?
    人 = 3.14 或者 人 = ‘w’ 吗?
    人或者书,这些东西我们要表达的时候,人 或者 书 这些都是 – 复杂对象;
    比如描述人要有: 姓名+身高+年龄+身份证号码+…等等一些相关的信息才能够描述清楚。
    比如描述书要有:书名+作者+出版社+定价+书号…等等
    它们都是一些----复杂对象;
    对于复杂对象我们就用 — 结构体 — 我们自己创造出来了的一种类型。

    代码实例: 创建一个结构体类型

    // 创建一个结构体类型
    struct Book
    {
    	char name[20]; // C语言程序设计
    	short prices; // 55
    };
    

    然后再创建我们的主函数main(),利用结构体类型创建一个类型的结构体变量

    int main()
    {
    	// 利用结构体类型创建一个该类型的结构体变量
    	struct Book b1 = {"C语言程序设计",55};
    	printf("书名:%s\n", b1.name);
    	printf("价格:%d\元n", b1.prices);
    	return 0;
    }
    

    运行结果:
    书名:C语言程序设计
    价格:55元
    在这里插入图片描述
    修改结构体变量的值

    int main()
    {
    	// 利用结构体类型创建一个该类型的结构体变量
    	struct Book b1 = {"C语言程序设计",55};
    	printf("书名:%s\n", b1.name);
    	printf("价格:%d元\n", b1.prices);
    	b1.prices = 15;
    	printf("修改后的价格:%d\n", b1.prices);
    	return 0;
    }
    

    运行结果:
    书名:C语言程序设计
    价格:55元
    修改后的价格:15
    在这里插入图片描述
    修改书名,需要用到strcpy-字符串拷贝函数

    #include <string.h>
    // 创建一个结构体类型
    struct Book
    {
    	char name[20]; // C语言程序设计
    	short prices; // 55
    };
    
    int main()
    {
    	// 利用结构体类型创建一个该类型的结构体变量
    	struct Book b1 = {"C语言程序设计",55};
    	struct Book *pb = &b1; //书类型的指针
    	// 利用pb打印出我的书名和价格
    	// 打印简化的形式 ---- 使用->箭头就是指向的意思,获取书类型的指针pb,直接指向 name 和 prices
    
    	/*printf("书名:%s\n", b1.name);
    	printf("价格:%d元\n", b1.prices);
    	b1.prices = 15;
    	printf("修改后的价格:%d\n", b1.prices);
    	return 0;*/
    
    	strcpy(b1.name,"C++"); // strcopy-string copy -字符串拷贝--库函数,库函数需用用到 头文件
    	printf("书名:%s\n", b1.name);
    }
    

    因为strcpy是一个库函数,所以我们需要引入头文件 #include <string.h>

    运行结果:
    书名:C++
    在这里插入图片描述

    结构体里面的指针:struct Book *pb = &b1; //书类型的指针
    使用指针获取书名和价格

    // 创建一个结构体类型
    struct Book
    {
    	char name[20]; // C语言程序设计
    	short prices; // 55
    };
    
    int main()
    {
    	// 利用结构体类型创建一个该类型的结构体变量
    	struct Book b1 = {"C语言程序设计",55};
    	struct Book *pb = &b1; //书类型的指针
    	// 利用pb打印出我的书名和价格
    	printf("书名:%s\n", (*pb).name);
    	printf("价格:%d元\n", (*pb).prices);
    
    	/*printf("书名:%s\n", b1.name);
    	printf("价格:%d元\n", b1.prices);
    	b1.prices = 15;
    	printf("修改后的价格:%d\n", b1.prices);
    	return 0;*/
    }
    

    运行结果:
    书名:C语言程序设计
    价格:55元
    在这里插入图片描述
    简化的书写方式:
    打印简化的形式 ---- 使用->箭头就是指向的意思,获取书类型的指针pb,直接指向 name 和 prices

    // 创建一个结构体类型
    struct Book
    {
    	char name[20]; // C语言程序设计
    	short prices; // 55
    };
    
    int main()
    {
    	// 利用结构体类型创建一个该类型的结构体变量
    	struct Book b1 = {"C语言程序设计",55};
    	struct Book *pb = &b1; //书类型的指针
    	// 利用pb打印出我的书名和价格
    	// 打印简化的形式 ---- 使用->箭头就是指向的意思,获取书类型的指针pb,直接指向 name 和 prices
    	printf("书名:%s\n", pb->name);
    	printf("书名:%d元\n", pb->prices);
    
    
    	/*printf("书名:%s\n", (*pb).name);
    	printf("价格:%d元\n", (*pb).prices);*/
    
    	/*printf("书名:%s\n", b1.name);
    	printf("价格:%d元\n", b1.prices);
    	b1.prices = 15;
    	printf("修改后的价格:%d\n", b1.prices);
    	return 0;*/
    }
    

    在这里插入图片描述
    运行结果:
    书名:C语言程序设计
    书名:55元
    在这里插入图片描述
    点 和 箭头的区别 . / ->

    // ->   结构体指针->成员
    	printf("书名:%s\n", pb->name);
    	printf("书名:%d元\n", pb->prices);
    
    	// .    结构体变量.成员
    	printf("书名:%s\n", (*pb).name);
    	printf("价格:%d元\n", (*pb).prices);
    
    cs
    下一篇:没有了