小白都能看懂的C语言入门教程

news2024/10/6 6:43:40

文章目录

  • C语言入门教程
  • 1. 第一个C语言程序HelloWorld
  • 2. C语言的数据类型
  • 3. 常量变量的使用
  • 4. 自定义标识符#define
  • 5. 枚举的使用
  • 6. 字符串和转义字符
  • 7. 判断和循环
  • 8. 函数
  • 9. 数组的使用
  • 10. 操作符的使用
  • 11. 结构体
  • 12. 指针的简单使用

C语言入门教程

1. 第一个C语言程序HelloWorld

#include<stdio.h>
int main() {
	printf("HelloWorld");
}

2. C语言的数据类型

(1)数据类型分类

1.char 字符数据类型 ,长度1

2.short 短类型数据类型,长度4

3.int 整型数据类型,长度2

4.long 长整型,长度4

5.long long 更长的整型,长度8

6.float 单精度浮点数,长度4

7.double 双精度浮点数,长度8

在这里插入图片描述

(2)长度计算使用sizeof(数据类型参数);

(3)输出所使用的符号

short		%hd
int			%d
long		%ld
long long	%lld
float		%f
double		%lf
char		%c

3. 常量变量的使用

(1)变量的定义

变量类型 变量名(=初始化数据);

(2)常量的定义

常量顾名思义,就是不可改变的变量,使用修饰词const:

示例:

#include<stdio.h>
int main() {
	const int a = 10;
	a = 20;
	printf("%d\n",a);
}

报错图:

在这里插入图片描述

4. 自定义标识符#define

(1)如何定义标识符

一般在#include<stadio.h>下面在main上面进行定义

#define 常量名 值

#include<stdio.h>
#define MAX 50
int main() {
	printf("%d",MAX);
	return 0;
}

在这里插入图片描述

5. 枚举的使用

(1)枚举的定义

enum 变量名{

​ 定义的属性值1 = 0,定义的属性值2,定义的属性值3,…定义定义的属性值n

}

定义在main方法内部

注意:属性值后面不跟值默认是0,也可以自定义值,例如定义的属性值1 = 100,则从100开始,后面依次加一。

例1:使用默认值

#include<stdio.h>
int main() {
	enum DAY{
		day0,day1,day2,day3
	};
	printf("%d %d %d %d",day0,day1,day2,day3);
}

在这里插入图片描述

例2:自定义值

#include<stdio.h>
int main() {
	enum DAY{
		day0 = 10,day1,day2,day3
	};
	printf("%d %d %d %d",day0,day1,day2,day3);
}

在这里插入图片描述

例3:前面使用默认值后面自定义值

#include<stdio.h>
int main() {
	enum DAY{
		day0,day1,day2=12,day3
	};
	printf("%d %d %d %d",day0,day1,day2,day3);
}

在这里插入图片描述

6. 字符串和转义字符

(1)字符串如何定义

c语言字符串的定义和java中的字符串定义还是有区别的,在C语言的数据类型中,我们并没有看到有String类型的数据,而仅仅只有char类型数据,说明c语言的字符串不能直接定义,需要借助数组定义。通常有三种定义方法

第一种:char 字符串名字[长度] = {字符串所含元素};

这一种给出的字符串的元素可以不等于字符串的长度,可以小于,但是不能大于字符串的长度。给的元素小于数组的长度,打印出的是实际元素个数,但是长度还是定义的长度

#include<stdio.h>
int main() {
	char arr[3] = {'a','b'};
	printf("%s\n",arr);
}

在这里插入图片描述

第二种:char 字符串名字[] = {字符串所含元素};

一般这种需要在末尾加上’\0’,表示结束。

#include<stdio.h>
int main() {
	char arr[] = {'a','b','\0'};
	printf("%s\n",arr);
}

在这里插入图片描述

第三种:char 字符串名字[] = “字符串包含元素”;

#include<stdio.h>
int main() {
	char arr[] = "abc";
	printf("%s\n",arr);
}

在这里插入图片描述

注意:这三种乍得一看似乎没有区别,其实还是有区别的,主要区别在于’\0’结束符的使用

(2)转义字符

\'	单引号
\"	双引号
\\	反斜杠
\n	换行
\r	回车
\t	水平制表符

7. 判断和循环

(1)判断

语法:

if(判断条件){
	执行内容
}else if(判断条件1){
    执行内容2
}else{
    执行内容3
}

(2)选择

#include<stdio.h>
int main() {
	int n;
	scanf("%d",&n);
	switch(n){
		case 0:{
			printf("%d\n",n);
			break;
		}case 1:{
			printf("%d\n",n);
			break;
		}case 2:{
			printf("%d\n",n);
			break;
		}
	}
}

在这里插入图片描述

(3)循环

①for循环

#include<stdio.h>
int main() {
	for(int i =0;i < 10;i++){
		printf("%d\n",i);
	} 
}

②while循环

#include<stdio.h>
int main() {
	int n =0;
	while(n < 10){
		printf("%d\n",n);
		n++;
	}
}

③do … while循环

#include<stdio.h>
int main() {
	int n =0;
	do{
		printf("%d\n",n);
		n++;	
	}while(n < 10);
}

8. 函数

函数一般用于流程化的东西,也称为批量处理。例如计算a与b的和,这里的a和b是泛指,不是只具体的,这时候使用函数来计算很明显能提高效率。

#include<stdio.h>
int sum(int a,int b); //声明函数 
int main() {
	int a = 10;
	int b = 20;
	printf("%d\n",sum(a,b));
}
int sum(int a,int b){
	return a+b;
}

9. 数组的使用

(1)数组的定义

①int arr[5] = {数组的五个元素,或者小于5个元素,默认为0} ;

#include<stdio.h>
int sum(int a,int b); //声明函数 
int main() {
	int arr[5] = {1,2,4,5,6} ;
	for(int i =0;i < 5;i++){
		printf("%d",arr[i]);
	}
}

②int arr[] = {数组的元素} ;

#include<stdio.h>
int sum(int a,int b); //声明函数 
int main() {
	int arr[] = {1,2,4,5,6} ;
	for(int i =0;i < 5;i++){
		printf("%d",arr[i]);
	}
}

10. 操作符的使用

算术操作符

+ - * 、 %

移位操作符

>> <<

位操作符

& ^ |

赋值操作符

= += -= *= /= &= |= >>= <<=

单目操作符

!	逻辑反操作
-
+
&	取地址
*	引用操作符
~	取反操作
--
++

关系操作符

>
>=
<
<=
!=
==

逻辑操作符

&&
||

三亩条件操作符

a > b? a : b

11. 结构体

结构题使用struct关键词修饰,结构体表示的是例如表示一个学生的信息,学生信息属性不止一个并且都是一个人的属性我们如何表示,使用结构体就能完美的表示,例如还有银行卡的信息,id号,拥有者姓名,卡的类型也需要表示

#include<stdio.h>
struct Student{
	int id;
	char name[20];
	int age;
	char sex[4];
}; 
int main() {
	struct Student stu = {1,"张三",10,"男"};
	printf("id=%d name=%s age=%d sex=%s",stu.id,stu.name,stu.age,stu.sex);
}

12. 指针的简单使用

指针也就是一个地址的映射。把一个变量的地址址赋值给一个指针。

#include<stdio.h>
int sum(int a,int b); //声明函数 
int main() {
	int m = 10;
	int* p = &m; //&取地址址的意思,把m的地址复制给指针p 
	*p = 20;	//引用p复制给20 
	printf("%d",*p);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/363322.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Could not find resource jdbc.properties问题的解决

以如下开头的内容&#xff1a; Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException: ### Error building SqlSession. ### The error may exist in SQL Mapper Configuration 出现以上问题是没有在src/main/resources下创建jdbc.prop…

IDEA怎么自动生成serialVersionUID

序列化和反序列化Java是面向对象的语言&#xff0c;与其他语言进行交互&#xff08;比如与前端js进行http通信&#xff09;&#xff0c;需要把对象转化成一种通用的格式比如json&#xff08;前端显然不认识Java对象&#xff09;&#xff0c;从对象到json字符串的转换&#xff0…

CF707C Pythagorean Triples 题解

CF707C Pythagorean Triples 题解题目链接字面描述题面翻译题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1样例 #2样例输入 #2样例输出 #2样例 #3样例输入 #3样例输出 #3样例 #4样例输入 #4样例输出 #4样例 #5样例输入 #5样例输出 #5提示思路代码实现题目 链接 http…

深度卷积对抗神经网络 进阶 第一部分 GANs 在数据增强和隐私领域的应用 GANs for Data Augmentation and Privacy

深度卷积对抗神经网络 进阶 第一部分 GANs 在数据增强和隐私领域的应用 GANs for Data Augmentation and Privacy GANs可以创造性地生成数据&#xff0c;这样就可以用在数据增强领域&#xff0c;在某些缺乏数据的行业认为地添加数据。此外&#xff0c;生成的数据如果用于神经网…

365天深度学习训练营-第J3周:DenseNet算法实战与解析

目录 一、前言 二、论文解读 1、DenseNet的优势 2、设计理念 3、网络结构 4、与其他算法进行对比 三、代码复现 1、使用Pytorch实现DenseNet 2、使用Tensorflow实现DenseNet网络 四、分析总结 一、前言 &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习…

如何使用 ESP-PROG 板的 Program 接口为 ESP32-S3-WROOM-1 系列的模组烧录固件?

ESP-PROG 是一款乐鑫推出的开发调试工具&#xff0c;具有自动下载固件、串口通信、JTAG 在线调试等功能。具体使用说明参见&#xff1a;ESP-Prog 下载与调试板介绍 。 ESP-Prog 采用 FTDI 公司的 FT2232HL 为 USB Bridge Controller 芯片&#xff0c;可通过配置将 USB 2.0 接口…

嵌入式开发:如何将嵌入式代码库从C转换为C++?

几十年来&#xff0c;嵌入式软件工程师们一直在争论是否应该使用C替代C语言进行开发工作。56%的嵌入式软件是用C语言编写的。然而&#xff0c;C已经逐渐普及&#xff0c;大约23%的新嵌入式软件项目都是用C编写的。那么&#xff0c;嵌入式开发人员要如何将嵌入式代码库从C转换为…

基于RK3399+Linux QT地面测试台多参数记录仪测试平台软件设计

随着高科技技术在现代化战争中日益重要作用&#xff0c;飞行装备的研制亦从单元体制发展 到多元体制。航空装置系统在设计过程中&#xff0c;需要大量测试工作&#xff0c;尤其是需要把系统研制 和飞行试验中各部分工作状态参数实时记录&#xff0c;用以分析、改进设计。记录仪…

006 金融工具库funcat安装教程及异常处理

funcat库集合了同花顺、通达信等的常用公式&#xff0c;安装后可以直接使用公式制定策略。 funcat常用公式可参考github说明&#xff1a;GitHub - cedricporter/funcat: Funcat 将同花顺、通达信、文华财经麦语言等的公式写法移植到了 Python 中。 常见异常&#xff1a; 使用…

干货解答:如何设置Facebook Messenger 自动回复?

Facebook Messenger 自动回复消息是提升客户体验的有效方法。在本文中&#xff0c;我们将探讨设置Facebook 自动响应和不同的创建方法 Facebook 自动回复。另外&#xff0c;我们准备了一些最受欢迎的 Facebook Messenger 自动回复消息。Facebook Messenger 自动回复&#xff1a…

Kafka消费分组和分区分配策略

Kafka消费分组&#xff0c;消息消费原理 同一个消费组里的消费者不能消费同一个分区&#xff0c;不同消费组的消费组可以消费同一个分区 &#xff08;即同一个消费组里面的消费者只能在一个分区中&#xff09; Kafka分区分配策略 问题 用过 Kafka 的同学用过都知道&#xf…

idea启动报错If you already have a 64-bit JDK installed, define a JAVA HOME variable

IDEA启动报错&#xff0c;如下图所示&#xff1a; 解决方法&#xff1a; 1.根据以下路径找到文件idea64.exe.vmoptions &#xff0c;路径如下图所示&#xff1a; C:\Users\Thinkpad\AppData\Roaming\JetBrains\IntelliJIdea2020.3\idea64.exe.vmoptions 其中Thinkpad是电脑的…

0401不定积分的概念和性质-不定积分

文章目录1 原函数与不定积分的概念1.1 原函数1.2 原函数存在定理1.3 不定积分2 不定积分的性质3 基本积分表4 例题后记1 原函数与不定积分的概念 1.1 原函数 定义1 如果在区间I上&#xff0c;可导函数F(x)的导航为f(x)&#xff0c;即对任一x∈Ix\in Ix∈I&#xff0c;都有 F′…

ubuntu转储coredump

方法一&#xff1a; 输入以下命令即可,其中${USER}为自己电脑的用户名&#xff1a; ulimit -c unlimited echo "/home/${USER}/core.%p" > /proc/sys/kernel/core_pattern 方法二&#xff1a; Disable apport : sudo systemctl stop apport.servicesudo system…

【Git】Git的分支操作

目录 4、 Git 分支操作 4.1 什么是分支 4.2 分支的好处 4.3 分支的操作 4、 Git 分支操作 4.1 什么是分支 在版本控制过程中&#xff0c; 同时推进多个任务&#xff0c; 为每个任务&#xff0c; 我们就可以创建每个任务的单独分支。 使用分支意味着程序员可以把自己的工作…

98%的程序员,都没有研究过JVM重排序和顺序一致性

文章整理自 博学谷狂野架构师 重排序 数据依赖性 如果两个操作访问同一个变量&#xff0c;且这两个操作中有一个为写操作&#xff0c;此时这两个操作之间就存在数据依赖性。数据依赖分下列三种类型&#xff1a; 名称代码示例说明写后读a 1;b a;写一个变量之后&#xff0c;再…

YOLOv5改进、YOLOv7改进IoU损失函数:YOLOv7涨点Trick,改进添加SIoU损失函数、EIoU损失函数、GIoU损失函数、α-IoU损失函数

&#x1f4a1;该教程为改进入门指南&#xff0c;属于《芒果书》&#x1f4da;系列&#xff0c;包含大量的原创首发改进方式, 所有文章都是全网首发原创改进内容&#x1f680; &#x1f4a1;本篇文章 基于 YOLOv5、YOLOv7芒果改进YOLO系列&#xff1a;YOLOv7改进IoU损失函数&am…

[手把手教你]实现简单的登录跳转以及tab栏的动态渲染

需求:实现login登录页输入用户名和密码, 匹配失败显示提示信息, 成功则跳转到index主页index页面中各组件通过嵌套路由实现,点击一级菜单可以动态显示二级菜单1.使用vite搭建项目安装初始化npm init vuelatest选择配置进入项目目录,安装模块npm i, 启动项目npm run dev2.项目目…

【答疑现场】我一个搞嵌入式的,有必要学习Python吗?

【答疑现场】我一个搞嵌入式的&#xff0c;有必要学习Python吗&#xff1f; 文章目录1 写在前面2 一个结论3 Python在嵌入式领域能干啥事4 Python是用来干大事的5 友情推荐6 福利活动大家好&#xff0c;我是架构师李肯&#xff0c;一个专注于嵌入式物联网系统架构设计的攻城狮。…

FPGA纯vhdl实现MIPI CSI2 RX视频解码输出,OV13850采集,提供工程源码和技术支持

目录1、前言2、Xilinx官方主推的MIPI解码方案3、纯Vhdl方案解码MIPI4、vivado工程介绍5、上板调试验证6、福利&#xff1a;工程代码的获取1、前言 FPGA图像采集领域目前协议最复杂、技术难度最高的应该就是MIPI协议了&#xff0c;MIPI解码难度之高&#xff0c;令无数英雄竞折腰…