小白都能看懂的C语言入门教程
文章目录
- 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);
}
相关文章:
小白都能看懂的C语言入门教程
文章目录C语言入门教程1. 第一个C语言程序HelloWorld2. C语言的数据类型3. 常量变量的使用4. 自定义标识符#define5. 枚举的使用6. 字符串和转义字符7. 判断和循环8. 函数9. 数组的使用10. 操作符的使用11. 结构体12. 指针的简单使用C语言入门教程 1. 第一个C语言程序HelloWor…...
leetcode 21~30 学习经历
leetcode 21~30 学习经历21. 合并两个有序链表22. 括号生成23. 合并K个升序链表24. 两两交换链表中的节点25. K 个一组翻转链表26. 删除有序数组中的重复项27. 移除元素28. 找出字符串中第一个匹配项的下标29. 两数相除30. 串联所有单词的子串小结21. 合并两个有序链表 将两个升…...
让ArcMap变得更加强大,用python执行地理处理以及编写自定义脚本工具箱
文章目录一、用python执行地理处理工具1.1 例:乘以0.00011.2 例:裁剪栅格1.3 哪里查看调用某工具的代码?二、用python批量执行地理处理工具2.1 必需的python语法知识for循环语句缩进的使用注释的使用2.2 一个批处理栅格的代码模板三、创建自定…...
SAP 项目实施阶段全过程
在sap实施项目的周期和步骤上,根据各公司对业务的理解不同,也被划分为各个阶段,但其中由普华永道提出的分七步走,个人觉得对刚进入这一行业的人很有帮助,接下来一起分享和讨论下: sap实施项目生命周期&…...
idea中的Maven导包失败问题解决总结
idea中的Maven导包失败问题解决总结 先确定idea和Maven 的配置文件settings 没有问题 找到我们本地的maven仓库,默认的maven仓库路径是在\C:\Users\用户名.m2下 有两个文件夹,repositotry是放具体jar包的,根据报错包的名,找对应文…...
REDIS中的缓存穿透,缓存击穿,缓存雪崩原因以及解决方案
需求引入一般在项目的开发中,都是使用关系型数据库来进行数据的存储,通常不会存在什么高并发的情况,可是一旦涉及大数据量的需求,比如商品抢购,网页活动导致的主页访问量瞬间增大,单一使用关系型数据库来保存数据的系统…...
数据库及缓存之MySQL(一)
思维导图 常见知识点 1.mysql存储引擎: 2.innodb与myisam区别: 3.表设计字段选择: 4.mysql的varchar(M)最多存储数据: 5.事务基本特性: 6.事务并发引发问题: 7.mysql索引: 8.三星索引…...
项目管理中,项目经理需要具备哪些能力?
项目经理是团队的领导者,是带领项目团队对项目进行策划、执行,完成项目目标,对于项目经理来说,想要有序推进项目,使项目更成功,光有理论知识是不够的,也要具备这些能力: 1、分清主…...
itk中的一些图像处理
文章目录1.BinomialBlurImageFilter计算每个维度上的最近邻居平均值2.高斯平滑3.图像的高阶导数 RecursiveGaussianImageFilter4.均值滤波5.中值滤波6.离散高斯平滑7.曲率驱动流去噪图像 CurvatureFlowImageFilter8.由参数alpha和beta控制的幂律自适应直方图均衡化9.Canny 边缘…...
Endless lseek导致的SQL异常
最近碰到同事咨询的一个问题,在执行一个函数时,发现会一直卡在那里。 strace抓了下发现会话一直在执行lseek,大致情况如下: 16:13:55.451832 lseek(33, 0, SEEK_END) 1368064 <0.000037> 16:13:55.477216 lseek(33, 0, SE…...
JUC-day01
JUC-day01 什么是JUC线程的状态: wait sleep关键字:同步锁 原理(重点)Lock接口: ReentrantLock(可重入锁)—>AQS CAS线程之间的通讯 1 什么是JUC 1.1 JUC简介 在Java中,线程部分是一个重点,本篇文章说的JUC也是关于线程的。JUC就是java.util .con…...
Mind+Python+Mediapipe项目——AI健身之跳绳
原文:MindPythonMediapipe项目——AI健身之跳绳 - DF创客社区 - 分享创造的喜悦 【项目背景】跳绳是一个很好的健身项目,为了获知所跳个数,有的跳绳上会有计数器。但这也只能跳完这后看到,能不能在跳的过程中就能看到,…...
数据库概述
20世纪60年代后期,就出现了数据库技术。取得成就如下:造就了四位图灵奖得主发展成为以数据建模和DBMS核心技术为主,内容丰富的一门学科。带动了一个巨大的软件产业-DBMS产品及其相关工具和解决方案。四个基本概念数据数据是数据库中存储的基本…...
【已解决】解决IDEA的maven刷新依赖时出现Connot reconnect错误
前言 小编我将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注一下!也许一个人独行,可以走的很快,但是一群人结伴而行,才能走的更远!让我们在成长的道路上互相学习&#…...
动态链接库(.so)文件的变编译和引用、执行
动态链接库(.so)文件的变编译和引用 动态链接库:SO(Shared Object)是一种动态链接库,也被称为共享库。它是一种可被多个程序共享使用的二进制代码库,其中包含已编译的函数和代码。与静态链接库不同,动态链接…...
linux(centos8)文件解压命令
linux解压命令tar 解压命令常用解压命令1 [.tar] 文件 解压到当前文件夹2 [.tar.gz] 文件 解压到当前文件夹3 [.tar] 解压到指定文件夹 -C 必须是大写unzip 解压命令常用解压命令1 [.zip]解压到当前文件夹2 [.zip] 解压到指定文件夹2 [.zip] 解压到指定文件夹(强行覆…...
阅读笔记6——通道混洗
一、逐点卷积 当前先进的轻量化网络大都使用深度可分离卷积或组卷积,以降低网络的计算量,但这两种操作都无法改变特征图的通道数,因此需要使用11的卷积。总体来说,逐点的11卷积有如下两点特性: 可以促进通道之间的信息…...
上海亚商投顾:沪指失守3300点 卫星导航概念全天强势
上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。市场情绪指数早间低开后震荡回升,沪指盘中一度翻红,随后又再度走低,创业板指午后跌近1%。…...
疯狂的SOVA:Android银行木马“新标杆”
2021年8月初,一款针对Android银行APP的恶意软件出现在人们的视野中,ThreatFabric 安全研究人员首次发现了这一木马,在其C2服务器的登录面板,研究人员发现,攻击者将其称之为SOVA。 ** SO** ** V** ** A简介** 在俄语中…...
汽车零部件企业数字工厂管理系统建设方案
在汽车零部件制造领域,伴随工业信息化与机器人化,制造模式逐渐从 CAD/CAE/CAM 数字化设计及加工走向全产品周期虚拟现实的数字化工厂管理系统平台,实现虚拟现实设计制造,防范产品缺陷并预防设备故障,大幅提高生产效率。…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...
uniapp手机号一键登录保姆级教程(包含前端和后端)
目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...
WebRTC从入门到实践 - 零基础教程
WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...
tomcat入门
1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...
