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语言基本结构二

目录

一.修炼必备

二.关键字

三.#define定义常量和宏(初识)

四.指针(初识)

五.结构体(初识)

六.总结

? ? ? ? ?!!!恭喜你,成功突破至练气五层!!!


?

一.修炼必备

? 1.入门必备:VS2019社区版,下载地址:Visual Studio 较旧的下载 - 2019、2017、2015 和以前的版本 (microsoft.com)

? 2.趁手武器:印象笔记/有道云笔记

? 3.修炼秘籍:牛客网 - 找工作神器|笔试题库|面试经验|实习招聘内推,求职就业一站解决_牛客网 (nowcoder.com)

? 4.雷劫必备:leetcode?力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台?

注:遇到瓶颈怎么办?百度百科_全球领先的中文百科全书 (baidu.com)

?

?

二.关键字

? 1.关键字使用规则

auto自动变量,局部变量
break跳出switch分支和循环的关键字
continue结束当前循环,执行下一次循环
do与while联合使用:do while();
whilewhile循环
forfor循环
switch多分支,与case、default搭配使用
caseswitch中的匹配语句
defaultcase匹配失败的,则由default执行
char字符型数据类型
short、int、long、long long短整型、整型、长整型、长长整型
float、double单精度浮点数、双精度浮点数
const把变量变成常变量,常变量的值不能改变
if条件语句
if - else单分支条件语句
if - else if - else if …… else多分支条件语句
enum枚举类型
extern引用外部全局变量
goto无条件跳转语句
register寄存器
return函数中返回值
signed有符号的,一般与数据类型搭配
unsigned无符号的,一般与数据类型搭配
sizeof得到对象或类型的存储字节大小
static静态的,一般与数据类型搭配
struct结构体
typedef类型重定义
union联合体(共用体)
void用于函数无返回值,或形参列表无参数
volatile防止编译器对代码进行优化?

? 2.typedef关键字

? ? —— 对数据类型进行重定义(重命名)

#include <stdio.h>

typedef unsigned int unit; //把无符号整型重命名为unit
int main()
{
	unit a = 10;
	printf("%u\n", a);//%u是打印无符号整型
	return 0;
}

1125df75d8e741cf824cea7d0c70ee7e.png

? 3.static关键字

? ? i.static修饰局部变量:静态局部变量

? ? ?—— 静态局部变量只被初始化一次,static改变了局部变量的生命周期,从一开始的该局部变量出了所在的{}后消失,但被static修饰后,该局部变量直到程序结束前都是一直存在的(在静态区),且静态局部变量只对定义自己的函数体始终可见(也就是说,只在自己的{}内有用)

#include <stdio.h>

void test(int i)
{
	static int j = 10;//静态局部变量,只会初始化一次,随着程序结束而结束
	j++;
	printf("i = %d j = %d\n", i, j);
}

int main()
{
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		test(i);
	}
	return 0;
}

d15c0d169ef642d8bfcdfbb84fb35710.png

? ? ii.static修饰全局变量:静态全局变量

? ? ?—— 全局变量具有外部链接属性,其他文件的全局变量,我们可以使用extern关键字来引用;static修饰全局变量后,该全局变量就不具有了外部链接属性(该全局变量只能在本文件内访问)

#include <stdio.h>


extern int sum;//引用外部全局变量:因为全局变量具有外部链接属性
int main()
{
	printf("%d\n", sum);
	return 0;
}



add.c

int sum = 100;

4068c3feeba8447d80b621a37614f452.png

#include <stdio.h>

extern int sum;//因为sum的外部链接属性不存在了,所以无法引用这个变量
int main()
{
	printf("%d\n", sum);//找不到sum变量
	return 0;
}



add.c

//使全局变量的外部链接属性不存在,只能在本文件使用,不能被外部文件使用
static int sum = 100;

d1dbed4c1a6048f4b69422fa71ab1cd0.png

? ? iii.static修饰函数:静态函数

? ? ?—— static修饰函数和修饰全局变量一样,使函数的外部链接属性不存在,只能在本文件内使用

108287f39f3d42e09267eb95d752d28e.png

?

?

三.#define定义常量和宏(初识)

? 1.#define定义常量

#include <stdio.h>

#define MAX 100
int main()
{
	printf("%d\n", MAX);//100
	return 0;
}

? 2.#define定义宏(后面详解)

#include <stdio.h>

//#define定义宏
#define sum(a,b) ((a)+(b))

int main()
{
	printf("%d\n", sum(10, 20)); //30
	return 0;
}

? 注:以“#”开头的均为预处理命令,“define”为宏定义命令;在宏定义时,我们尽量给要进行的操作加上括号

? question:#define定义宏和函数有什么区别?(后面解答)

?

?

四.指针(初识)

? 1.内存

? ? i.内存是电脑上重要的存储器,计算机中程序的运行都是在内存中进行的

? ? ii.内存被划分为一个个小的内存单元,每个内存单元的大小是1字节

? ? iii.变量是在内存中分配空间的,每个内存单元都有地址,即变量也是有地址的

? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??3249edbe2a904243a99041b7124c462a.png

#include <stdio.h>

int main()
{
	int a = 10;//向内存申请4个字节的空间储存10
	return 0;
}

? 2.地址是如何产生的?

? ?—— 32/64位机器上,32根/64根地址线(电线),电线是有通电的两种状态:高电位和低电位,转化为数字信号就是1/0,32/64个1/0组成的数字既是地址

? 3.取出变量的地址(&)

#include <stdio.h>

//使用&符号取出变量的地址
int main()
{
	int num = 0;
	scanf("%d", &num);//输入函数,&是取num变量的地址,输入的数放在num的地址中
	&num;//取出num的地址
	//使用%p打印地址信息
	printf("%p\n", &num);//006FF9E0:地址随机产生,每次产生的地址不同
	return 0;
}

? 4.如何储存地址?

? ?—— 定义指针变量进行存储

? ?指针变量:用指针储存一个变量的地址信息

? ? i.指针的形式:

char*
int*
long*
float*
double*
…………

? ? ii.指针变量的使用?

#include <stdio.h>

int main()
{
	int a = 10;
	int* pa = &a;//&a取出了a的地址,使用pa进行储存a的地址,pa即为指针变量
    char* c = 'a';
    char* pc = &c;
	return 0;
}

? 5.指针变量的大小

? ? i.32位机器上,指针变量的大小为4个字节

? ? ii.64位机器上,指针变量的大小位8个字节

#include <stdio.h>
int main()
{
	//sizeof求数据类型或对象的字节大小
	printf("char* =%d\n", sizeof(char*));
	printf("short* =%d\n", sizeof(short*));
	printf("int* =%d\n", sizeof(int*));
	printf("long* =%d\n", sizeof(long*));
	printf("long long* =%d\n", sizeof(long long*));
	printf("float* =%d\n", sizeof(float*));
	printf("double* =%d\n", sizeof(double*));
	return 0;
}

? ?32位机器下指针变量大小

bd642895df134a709aa27a19b4cec20a.png

? 64位机器下指针变量大小?

c08a62f6575040da856cbb8ec86be787.png

?

?

五.结构体(初识)

? 1.什么是结构体?

? ?—— C语言中想要描述某一事物更加的细致,不可能单单靠几个数据类型就能解决,我们需要使用复杂类型才能把某一事物描述的更加细致,而结构体有能力做到这个

? 2.认识结构体(struct)

#include <stdio.h>

//描述学生的结构体
struct student
{
	char name[12];//姓名
	char sex;//性别
	int age;//年龄
};

int main()
{
	return 0;
}

? 3.初始化结构体

#include <stdio.h>

struct student
{
	char name[12];
	char sex[2];
	int age;
};

int main()
{
	struct student stu = { "小明",'男',18 };//声明结构体变量stu并初始化结构体变量
	return 0;
}

? 4.访问结构体成员信息

? ? i.使用.去访问结构体成员的信息

#include <stdio.h>

struct student
{
	char name[12];
	char sex[3];
	int age;
};

int main()
{
	struct student stu = { "小明","男",18};//声明结构体变量并初始化结构体变量
	//打印结构体变量的信息:使用.去访问结构体的成员信息
	printf("name = %s sex = %s age = %d\n", stu.name, stu.sex, stu.age);
	return 0;
}

? ? ii.使用(*xx).xx或->去访问结构体指针的成员信息

#include <stdio.h>

struct student
{
	char name[12];
	char sex[3];
	int age;
};

int main()
{
	struct student stu = { "小明","男",18 };//声明结构体变量并初始化结构体变量
	struct student* p = &stu;//指针p储存了stu的地址
	//使用(*xx).xx或->去访问结构体指针的成员信息
	printf("%s %s %d\n", (*p).name, (*p).sex, (*p).age);
	printf("%s %s %d\n", p->name, p->sex, p->age);
	return 0;
}

03da9df65ad74047b26d3831ab5d2f26.png

?

?

六.总结

? 1.常用关键字

? 2.typedef关键字的作用

? 3.static关键字

? ? 1)修饰局部变量?

? ? 2)修饰全局变量

? ? 3)修饰函数

? 4.#define的作用

? ? 1)定义常量?

? ? 2)宏定义

? 5.指针:

? ? 1)内存的解释?

? ? 2)每个单元内存的大小?

? ? 3)地址的产生

? ? 4)指针的形式?

? ? 5)指针变量的使用?

? ? 6)指针变量的大小

? 6.结构体

? ? 1)为什么需要复杂结构类型?

? ? 2)结构体的样式

? ? 3)结构体的初始化

? ? 4)结构体的成员访问

? !!!恭喜你,成功突破至练气五层!!!

?

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-12-25 10:47:31  更:2022-12-25 10:48:24 
 
开发: 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年5日历 -2024/5/19 4:49:23-

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