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语言程序设计详细版 (学习笔记1) 看完不懂,我也没办法。 -> 正文阅读

[C++知识库]C语言程序设计详细版 (学习笔记1) 看完不懂,我也没办法。

计算机语言

计算机语言是人与计算机之间通信的语言,由一些指令组成,包括数字,符号,语法等。
那什么是计算机语言🙌
计算机语言包括机器语言,汇编语言,高级语言

  • 机器语言:这个货是能够被计算机直接识别的语言,是由二进制数0和1组成的一串指令集和,but这对于我们程序员来说,机器语言是不便于记忆和识别的

  • 汇编语言:把不易理解的,记忆的机器语言按照对应关系转换成汇编指令,这些汇编语言是用英文字母和或符号串来代替机器语言,but这对于我们程序员来说还是挺难的,因为汇编语言依赖于硬件,即程序的移植性极差,我们在使用计算机时,需要我们去学习新的汇编指令,这对于我们是非常麻烦的

  • 高级语言:便是我们现在使用的编程语言,易于理解,记忆和使用(真的是这样的吗🤷?♂?,为什么我学起来hai那么难🤷?♀?·······)

程序设计与算法

算法是程序设计的灵魂
什么是算法勒?

  • 算法:字面意思:解决问题的方法与过程算法将要解决的实际问题和解决实际问题的计算机程序联合起来

最简单的C语言程序

我们直接代码开头

#include<stdio.h>//头文件
int main()  
{
	printf("你好,世界!\n"); //主函数
	return 0;
 } 

简单来说,一个C程序就是由若干头文件和函数组成

  • #include <stdio.h>就是一条预处理命令,它的作用是通过C语言编译系统在对C程序编译之前做一些预处理操作
  • 一个C程序只有一个主函数,即main函数。这个主函数C语言中唯一的入口
  • 在main前面的是主函数的类型
  • printf()是格式输出函数。在这里我们只需要记住它的功能就是在屏幕上输出指定的信息
  • \n是转义字符中的换行符
  • return是函数的返回值,根据函数类型的不同,返回值得类型也是不同的

其次我们要养成良好的书写习惯!!!!

因为你的代码并不只是要求能运行,还要美观易读。有可读性的代码才是有价值的代码,如果你写完代码,别人根本看不懂,甚至你自己都看不懂,那么这个代码就没法修改,如果程序需要升级或者要修改漏洞,效率就会很低!

程序解释——注释
C语言注释方法有两种:

/*这是多行注释*/
/*这是我生命中那举步维艰但又不朽的岁月,
 我学会了一切皆是暂时的.机遇.感情.人群.鲜花.
 我学会了爱是给予,
 是一切,让其受伤.我学会了暴露弱点是一个正确的选择,
 因为那很容易洞悉这世间冷暖炎凉*/
 //单行注释
 //生活就是不断崩溃 不断自愈

我们需要记住
注释是写给程序员看的,不是写给电脑看的。

数据类型

C语言的基础知识包括关键字,标识符,常量,变量,数据类型,运算符

关键字与标识符

关键字

关键字:是指在编程语言里事先定义好,并被赋予了特殊含义的单词,也称作保留字,他们具有特殊的含义,不能被我们随意使用的字符,每一个关键字都有特殊的作用
特征:

  • 在编译器中会显示特殊的颜色

. C语言中的关键字 (32个) auto、double、int、struct、break、long、 switch、else、case、enum、register、typedef、char、extern、return、union、construction、float、short、unsigned、continue、for、signed、void、default、goto、sizeof、volatile、do、if、while、static
最新版中多加了五个(restrict、inline、_Bool、_Complex、_Lmaginary)

这时候有人就会问,这么多我怎么记呀😣。你这不是为难我吗。
别急这些我们现在只需要了解一下,等后面遇到了,用到了,我们在理解和加深记忆和运用

在这里插入图片描述

标识符

标识符: 在我们的编程过程中,我们需要定义一些符号来标记一些数据或内容,有变量名,方法名,参数名,数组名等

C语言规定,

  • 标识符可以是字母(A~Z,a~z)、数字(0~9)、下划线_组成的字符串
  • 标识符不能以数字作为第一个字符
  • 标识符不能是C语言中的关键字
  • 注:

标识符的长度最好不要超过8位,

标识符是严格区分大小写的。例如name和Name 是两个不同的标识符。

标识符最好选择有意义的英文单词组成做到"见名知意",不要使用中文。不然别的程序员看代码看不懂,想打人😡

常量与变量

常量

常量:在程序运行期间,固定不变的量。
常量的分类:

  • 字符串常量:凡是用双引号引起来的部分,叫做字符串常量。例如:“abc”、“2b”.
  • 整数常量: (%d)整数类型的常量,直接写上的数字,没有小数点。例如:100。
  • 浮点数常量:(%f)直接写上的数字,有小数点。例如:-2.5。
  • 字符常量:(%c)凡是用单引号引起来的单个字符,叫做字符常量。例如:‘a’、‘中’。
  • 布尔常量:只有两种取值。true、false。
  • 空常量:null。代表没有任何数据
#define 标识符 常量值
#include<stdio.h>
#define MONEY 3000  //定义常量及常量值 
int main()
{
	printf("你的花呗额度为%d元\n",MONEY) ;//你猜支付宝会多给你钱吗? 
	return 0; 
	
 } 
 //运行结果
 你的花呗额度为3000

变量

变量:就是可以变化的量,而每个变量都会有一个名字(标识符)。变量占据内存中一定的存储单元。使用变量之前必须先定义变量,要区分变量名和变量值是两个不同的概念。
在这里插入图片描述

变量定义的一般形式为:数据类型 变量名
多个类型相同的变量:数据类型 变量名, 变量名, 变量名…

接下来我们直接上代码。用代码说明

#include<stdio.h> 
int main()
{
int love;    //定义一个整型变量,变量名字叫love
love=520;    //给lov变量赋值为520
int a,b,c,d; //同时声明多个变量,然后分别赋值
a=1;
b=2;
c=3;
d=4;
printf("%d\n%d\n%d\n%d\n%d\n",love,a,b,c,d);//打印整型变量num,a,b,c,d
//运行结果
520
1
2
3
4
}

注意:在定义中不允许连续赋值,如int=a=b=c=d;这是不合法的

数据类型

数据类型用于声明不同类型的变量或者函数,而变量的类型决定了变量存储占用的空间以及存储模式
C语言中中的数据类型分为4种,分别是基本类型,构造类型,指针类型,空类型
在这里插入图片描述

基本类型

基本类型: 整型,字符型,浮点型
我这边只列出了我们经常要用的🐱?🏍🐱?🚀

数据类型说明字节应用例子
char字符型1用于储存单个字符char sex=‘m’
int整型2用于存储整数int height=170
folat单精度浮点型4用于存储小数float price=12.5
double双精度浮点型8用于存储位数更多的小数double pi=3.1415926

这里我们说一下格式化输出语句,这也是比较重要的
请添加图片描述
格式化输出语句,是将各种类型的数据按照格式化后的类型及指定位置,输出到计算机屏幕上,显示给我们

printf("输出个格式符",输出目标)//这里输出目标变量名等
#include<stdio.h>
int main()
{
	int a;   //定义整型变量a
	a=1;   //给a赋值为1
	printf("%d\n",a) ; //输出 a
	char b;  
	b='a'; 
	printf("%c\n",b);
	float c=3.14;
	printf("%f\n",c);
	printf("%s","你好世界");
	//还可以这样
	printf("整数:%d 小数:%f 字符:%c",a,c,b);
	return 0; 
	
 } 
 运行结果:
1
a
3.140000
你好世界
整数:1 小数:3.140000 字符:a

构造类型

C语言提供的基本数据类型(字符型,整型,浮点型)并不能够满足后面复杂程序的设计需求,因此
C语言允许用户根据自己的需求自定义数据类型,这些自定义的数据类型称为构造类型
构造类型:数组,枚举;共用体,结构体
1.数组
数组:是一组具有相同数据类型的变量集合,这些变量称为数组的元素,数组的类型由数组中存储的元素的类型决定

在定义数组时要指定数组类型和数组大小
int arr[5]; 定义一个int类型的数组,大小为5
char str[5]; 定义一个char类型的数组,大小为5
float ff[5]; 定义一个float类型的数组,大小为5

2.枚举类型
在实际编程中,有些数据的取值往往是有限的,只能是非常少量的整数,并且最好为每个值都取一个名字,以方便在后续代码中使用,比如一个星期只有七天,一年只有十二个月,一个班每周有六门课程等。

枚举类型:用于定义值可以被一 一列举的变量,具体格式如下:

enum 枚举名{标识符1=整型常量1,·······}

我们直接来看代码👩?🏫

#include <stdio.h>
#define Mon 1   //是不是很熟悉,有点陌生?再去上面常量看一看🤬😡
#define Tues 2
#define Wed 3
#define Thurs 4
#define Fri 5
#define Sat 6
#define Sun 7
int main(){
int day;
scanf("%d", &day);
switch(day){
case Mon: puts("Monday"); break;
case Tues: puts("Tuesday"); break;
case Wed: puts("Wednesday"); break;
case Thurs: puts("Thursday"); break;
case Fri: puts("Friday"); break;
case Sat: puts("Saturday"); break;
case Sun: puts("Sunday"); break;
default: puts("Error!");
}
return 0;
}
运行结果:
5
Friday

但是副作用是宏名较多,代码松散,看起来总是有点不舒服,我们给他优化一下

int main(){

enum week{ Mon = 1, Tues, Wed, Thurs, Fri, Sat, Sun } day;

这就叫做代码优化😂😂😂😂😂😂
这对于我们以后写项目的时候还是很有用的
3.共用体
共用体又叫联合体,它可以把不同数据类型的变量整合到一起。
共用体数据类型使用union关键字进行声明上面关键字找找,是不是用到了。这时候我们在记忆和理解这个关键字的用法
格式如下:

union 共用体类型名称
{
   数据类型 成员名1;
   数据类型 成员名2;
   ·········
}

上代码(*  ̄3)(ε ̄ *)

#include <stdio.h>
#include <string.h>

union Data
{
   int i;
   float f;
   char  str[20];
};

int main( )
{
   union Data data;

   data.i = 10;
   data.f = 220.5;
   strcpy( data.str, "C Programming");

   printf( "data.i : %d\n", data.i);
   printf( "data.f : %f\n", data.f);
   printf( "data.str : %s\n", data.str);

   return 0;
}
//运行结果
data.i : 1917853763
data.f : 4122360580327794860452759994368.000000
data.str : C Programming

为啊么只有最后一个值显示出来了,????????
因为之后赋给变量的值占用了内存位置

定义了共用体变量之后,需要对共用体变量进行初始化,对公共体变量进行初始化时,只能对其中一个成员进行初始化。同一时间只能使用到一个成员

union 共用体类型名 共用体变量={其中一个成员的类型值}

少废话,上代码

//实例
#include <stdio.h>
#include <string.h>
union Data
{
   int i;
   float f;
   char  str[20];
};
int main( )
{
   union Data data;
   
   data.i = 5;
   printf( "data.i : %d\n", data.i);

   data.f = 250.2;
   printf( "data.f : %f\n", data.f);

   strcpy( data.str, "C Programming");
   printf( "data.str : %s\n", data.str);

   return 0;
}
//运行结果
data.i : 5
data.f : 250.200000
data.str : C Programming
//在这里,所有的成员都能完好输出,因为同一时间只用到一个成员。

理解理解理解了没有
结构体
在上面我们讲解了共用体,它是一组具有相同类型的数据的集合。在实际的编程过程中,我们需要一组类型不同的数据,例如对于学生信息登记表,姓名为字符串,学号为整数,年龄为整数,所在的学习小组为整数,成绩为小数,因为数据类型不同,显然不能用一个数组来存放。

姓名学号年龄学习小组成绩
charintintintfloat

在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据。结构体的定义形式为:

struct 结构体名{
    结构体所包含的变量或数组
};

结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员(Member)。
别废话,上代码🐱?🏍🐱?🏍🐱?🏍🐱?🏍

struct stu{
char *name; //姓名
int num; //学号
int age; //年龄
int group; //所在学习小组
float score; //成绩
};

这里stu 为结构体名,它包含了 5 个成员,分别是 name、num、age、group、score。结构体成员的定义方式与变量和数组的定义方式相同,只是不能初始化。

注意大括号后面的分号;不能少,这是一条完整的语句。

结构体也是一种数据类型,它由程序员自己定义,可以包含多个其他类型的数据。

像 int、float、char 等是由C语言本身提供的数据类型,不能再进行分拆,我们称之为基本数据类型;而结构体可以包含多个基本类型的数据,也可以包含其他的结构体,我们将它称为复杂数据类型或构造数据类型。

结构体变量

既然结构体是一种数据类型,那么就可以用它来定义变量。
例如:struct stu stu1, stu2;
定义了两个变量 stu1 和 stu2,它们都是 stu 类型,都由 5 个成员组成。
注意关键字struct不能少

stu 就像一个“模板”,定义出来的变量都具有相同的性质。也可以将结构体比作“图纸”,将结构体变量比作“零件”,根据同一张图纸生产出来的零件的特性都是一样的。

你也可以在定义结构体的同时定义结构体变量:

struct stu{
char *name; //姓名
int num; //学号
int age; //年龄
int group; //所在学习小组
float score; //成绩
} stu1, stu2;

将变量放在结构体定义的最后即可。

如果只需要 stu1、stu2 两个变量,后面不需要再使用结构体名定义其他变量,那么在定义时也可以不给出结构体名,如下所示:

struct{ //没有写 stu
char *name; //姓名
int num; //学号
int age; //年龄
char group; //所在学习小组
float score; //成绩
} stu1, stu2;

这样做书写简单,但是因为没有结构体名,后面就没法用该结构体定义新的变量。

成员的获取和赋值

结构体和数组类似,也是一组数据的集合,整体使用没有太大的意义。数组使用下标[ ]获取单个元素,结构体使用点号 . 获取单个成员。获取结构体成员的一般格式为:

结构体变量名.成员名;

通过这种方式可以获取成员的值,也可以给成员赋值:

#include <stdio.h>
int main(){
struct{
char *name; //姓名
int num; //学号
int age; //年龄
int group; //所在小组
float score; //成绩
} stu1;
//给结构体成员赋值
stu1.name = "周杰伦";
stu1.num = 1001;
stu1.age = 18;
stu1.group = 1;
stu1.score = 100;
//读取结构体成员的值
printf("%s的学号是%d,年龄是%d,在%d组,今年的成绩是%.1f!\n", stu1.name, stu1.num, stu1.age, stu1.group, stu1.score);
return 0;
}
//运行结果
周杰伦的学号是1001,年龄是18,在1组,今年的成绩是100.0

除了可以对成员进行逐一赋值,也可以在定义时整体赋值,例如:

struct{
char *name; //姓名
int num; //学号
int age; //年龄
char group; //所在小组
float score; //成绩
} stu1 = { "周杰伦", 1001, 18, 1, 100 };
//运行结果
周杰伦的学号是1001,年龄是18,在1组,今年的成绩是100.0

不过整体赋值仅限于定义结构体变量的时候,在使用过程中只能对成员逐一赋值,这和数组的赋值非常类似。

需要注意的是,结构体是一种自定义的数据类型,是创建变量的模板,不占用内存空间;结构体变量才包含了实实在在的数据,需要内存空间来存储。

请添加图片描述
你们说是不是有问题,这和上面的共用体有什么区别,你讲了干什么??
这就是共用体与结构体的区别:

共同体:使几个不同类型的变量共占一段内存(相互覆盖)。所占内存长度是最长那个成员占的内存长度。

结构体:把不同类型的数据组合成一个整体。所占内存长度是各成员占之间的内存长度的总和。

结构体我们这里大概说一下,😂😂😂😂后面还会遇到的(你这是大概吗,。。。。。。)

从现在做起,坚持下去,一天进步一小点,不久的将来,你会感谢曾经努力的你!

如果又出错的,请各位友友指正。

请添加图片描述

新人报到,各位友友们,给我个三联(点赞,关注,收藏)

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

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