IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 从零基础到完全掌握C语言系列第一章——初识C语言(下) -> 正文阅读

[C++知识库]从零基础到完全掌握C语言系列第一章——初识C语言(下)

前言:在初识C语言(上)和初识C语言(中)我们已经大概了解了C语言的大部分内容,还有一些内容没有提到,剩下的内容博主会在初识C语言(下)中一一介绍,此外,感谢各位老铁对博主的支持。

一、常见关键字

在我们写代码的时候,有一个非常令人头疼的问题——那就是有些C语言的关键字我们并不知道它是关键字或者不知道这个关键字的作用是什么,这就导致我们无法正确应用这些关键字从而导致我们无法写出正确的代码或者写出的代码过于复杂难懂。
下面让我们一起来看一看C语言中的关键字:

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

这些关键字表面看起来复杂无章,其实我们只要对它们进行简单的分类,就能够很好的理解;关键字,先介绍下面几个,后期遇到讲解。

1.1关键字typedef

typrdef顾名思义是类型定义,这里应该理解为类型重命名。

比如:

#include <stdio.h>
//将unsigned int 重命名为unit_32,所以unit_32也是一个类型名
typedef unsigned int unit_32;
int main()
{
	//观察num1和num2,这两个变量的类型是一样的
	unsigned int num1 = 0;
	unit_32 num2 = 0;
	return 0;
}

我们看一下num1和num2的类型:
在这里插入图片描述
通过观察我们可以得出:typedef重命名前对应的类型和重命名后对应的类型是相同的。

1.2关键字static

在C语言中:
static是用来修饰变量和函数的
1.修饰局部变量—称为静态局部变量
2.修饰全局变量—称为静态全局变量
3.修饰函数—称为静态函数
接下来我们通过实例来理解关键字static的三个作用:
实例一:
这里是没有用static修饰的局部变量a
在这里插入图片描述
这里是用static修饰的局部变量a,此时a也称为静态的局部变量
在这里插入图片描述
通过以上两个程序我们可以得出第一个结论:
static修饰局部变量时实际上改变了局部变量量的储存位置,把一个局部变量从栈区存储到静态区,从而导致局部变量出了局部空间不会自动销毁。
实例二:
在这里插入图片描述
在这里插入图片描述

这里的a是从另一个源文件引入的,所以要是用关键字extern
那么这里我们能不能打印出a的值呢?
答案是可以的,因为全局变量在整个工程中都能够使用。
在这里插入图片描述
那当我们对全局变量加static修饰后会产生怎样的结果呢?
让我们一起来看一看:在这里插入图片描述
这里我们可以看出,当全局变量被static修饰后我们无法运行程序
这样我们就可以得出第二个结论:
static修饰全局变量,使全局变量只能在源文件内部使用,给我们的感觉就是全局变量的作用域变小了。
实例三:
static修饰函数
在这里插入图片描述
在这里插入图片描述
当函数被static修饰时,不能在其他源文件中使用,只能在源文件内部使用。这里static的修饰函数的作用和static修饰全局变量的作用是相似的。
在这里插入图片描述
当然,这只是关键字static在C语言中的作用,static在C++中还有其他作用,后面有机会的话博主也会讲解哈。

二、#define定义常量和宏

#define定义常量和宏其实就是对一些复杂代码的简化,比如说用函数实现两个数相加需要我们在函数内部进行,并且需要返回值;但如果使用#define定义的宏来实现就很方便了。
注意:我们在用#define定义的常量和宏时命名通常使用大写,便于和变量名区分。

//#define定义标志符常量
#define MAX 1000
//#define定义宏
#define ADD(x, y) ((x)+(y))
#include <stdio.h>
int main()
{
	int sum = ADD(2, 3);
	printf("sum=%d\n", sum);
	sum = 10 * ADD(2, 3);
	printf("sum=%d\n", sum);
	return 0;
}

三、指针

提到指针就不得不讲内存,那么内存是什么呢?

内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中运行的。所以为了有效的使用内存,就把内存划分为一个个小的内存单元,每个内存单元的大小是一个字节。

为了能够有效的访问到内存的每个单元,就给内存单元进行编号,这些编号被称为该内存单元的地址。

3.1内存

内存是如何产生的?
在这里插入图片描述
内存单元编号是由32/64个二进制位产生的
内存单元编号 == 地址 == 指针
产生的内存空间:
在这里插入图片描述
前面所提到的一个整形占4个字节就能借助一幅图来理解
在这里插入图片描述
在显示地址时,整形元素的地址就是第一个元素的地址
在这里插入图片描述
打印出来a的地址
在这里插入图片描述
和地址有关的
单目操作符& 取地址符号,将存储的内存编号取出
*解引用操作符 通过地址找到地址所存储的元素
注意:内存单元编号并没有存储,只是管理内存的编号。
在这里插入图片描述
pa是用来存放地址的,所以把pa叫做指针变量
在这里插入图片描述

3.2指针变量的大小

由于指针是地址,都是由32(32位机器)个二进制位组成,也就是4个字节
所以无论是int型指针、char型指针、还是double型的指针,所占的内存大小是一样的。
在这里插入图片描述

四、结构体

结构体是C语言中特别重要的知识点,结构体使得C语言有能力描述复杂类型。比如描述学生,学生包含:名字+年龄+性别+学号这几项信息。
这里只能使用结构体来描述。

struct Stu
{
	char name[20];
	int age;
	char sex[5];
	char id[20];

};

在这里插入图片描述
不使用函数打印
结构体访问操作符 .
结构体变量 . 结构体成员

int main()
{
	//初始化
	struct Stu s = { "张三", 18, "男", "20211554" };
	//打印
	printf("%s %d %s %s\n", s.name, s.age, s.sex, s.id);
	return 0;
}

使用函数打印

void print(struct Stu* s)
{
	//打印方法一
	printf("%s %d %s %s\n", (*s).name, (*s).age, (*s).sex, (*s).id);
	//打印方法二
	printf("%s %d %s %s\n", s->name, s->age, s->sex, s->id);
	
}
int main()
{
	//初始化
	struct Stu s = { "张三", 18, "男", "20211554" };
	//打印
	print(&s);
	/*printf("%s %d %s %s\n", s.name, s.age, s.sex, s.id);*/
	return 0;
}

方法一传递指针形参后先对参数进行解引用操作,然后访问结构体成员
方法二使用了另一种结构体访问操作符
-> 结构成员访问操作符
结构体指针->结构体成员

结语:当一个人的才华支撑不起野心的时候,只能安静读书。
到这里初识C语言部分已经结束了,觉得博主写的不错的来个三连吧,此外博主还创建了从零基础到完全掌握C语言的专栏,喜欢的铁子们可以点一下订阅的,初识C语言结束后博主会继续更新第二章——分支和循环语句。
感谢各位铁子的支持和鼓励!
在这里插入图片描述

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-01-28 11:42:41  更:2022-01-28 11:42:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:26:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码