淮阳网站建设/网络营销八大职能
目录
第一个C语言程序
main函数
写法:
printf和库函数
printf()函数
库函数
关键字
字符和ASCII码表
字符串和'\0'
转义字符
语句
注释
注释的两种形式
第一个C语言程序
#include<stdio.h>//第一个c语言程序
int main()
{printf("Hello World!\n");return 0;
}
main函数
每一个C语言程序不管有多少行代码,都是从main函数开始执行,也就是说main函数是程序的入口
main函数也叫做主函数,C语言程序不能没有main函数,有且只有一个main函数
即使程序有多个.c文件,也是只有一个main函数
写法:
//1、
int main()
{return 0;
}//2、括号中的void表示main函数无参数
int main(void)
{return 0;
}//3、这种基本不会用到
//main函数其实是有参数的,不想使用的时候就可以不写,需要的时候就写上
int main(int agvc, char* argv[])
{return 0;
}
main前面的int表示main函数执行结束的返回值类型,suoyi会在main函数的最后写"return 0"
有很多初学者第一次在写代码时都会出现以下常见的错误:
1、main写成mian
2、main后面的()漏写了
3、代码中不能使用中文符号
4、每一条语句的结束后面都要有一个分号
printf和库函数
printf()函数
在我们写的第一个C语言程序中会出现这行代码
printf("Hello World!\n");
这行代码中使用到了printf()函数,实现了在屏幕上信息的打印
在这里printf()函数是一个库函数,它的功能就是在屏幕上打印信息,它的全名是:print formet(按照格式打印信息)
只要将要打印的字符串放在双引号中并传递给printf函数就可以打印了
注:在使用库函数的时候要在程序头部写出头文件
这里要用到的是
#include<stdio.h>
库函数
那应该有人会好奇什么是库函数呢?
为了不再重复实现常⻅的代码,让程序员提升开发效率,C语⾔标准规定了⼀组函数,这些函数再由不 同的编译器⼚商根据标准进⾏实现,提供给程序员使⽤。这些函数组成了⼀个函数库,被称为标准 库,这些函数也被称为库函数。在这个基础上⼀些编译器⼚商可能会额外扩展提供部分函数(这些函 数其他编译器不⼀定⽀持)。
⼀个系列的库函数⼀般会声明在同⼀个头⽂件中,所以库函数的使⽤,要包含对应的头⽂件。
关键字
在C语言中有一批保留名字的符号,如:"int"、"return"等,这些符号被称为关键字或保留字
1、关键字都有特殊的意义,是保留给C语⾔使⽤的
2、程序员⾃⼰在创建标识符的时候是不能和关键字重复的
3、关键字也是不能⾃⼰创建的。
常用的32个关键字:
1、auto、 break、 case、 char 、 const 、 continue、 default、 do、 double 、 else、 enum、 extern2、float 、 for、 goto、 if、 int 、 long 、 register、 return、 short 、 signed 、 sizeof 、static3、struct、 switch、 typedef、 union、 unsigned 、 void 、 volatile、 while
字符和ASCII码表
在键盘上可以敲出各种字符,如:a,q,@,#等,这些符号都被称为字符,C语⾔中字符是⽤单引号括起来的,如:'a','b','@'。
我们知道在计算机中所有的数据都是以⼆进制的形式存储的,那这些字符在内存中分别以什么样的⼆进制存储的呢?如果我们每个⼈⾃⼰给这些字符中的每个字符编⼀个⼆进制序列,这个叫做编码,为了⽅便⼤家相互通信,不造成混乱,后来美国国家标准学会(ANSI)出台了⼀个标准 ASCII 编码,C语⾔中的字符就遵循了 ASCII 编码的⽅式。
我们不需要将这张表完全背下来,要使用到的时候查看就行,但有些数据是会经常用到的可以好好掌握
1、字符A~Z的ASCII码值从65~90
2、字符a~z的ASCII码值从97~122
3、对应的⼤⼩写字符(a和A)的ASCII码值的差值是32
4、数字字符0~9的ASCII码值从48~57
5、换⾏ \n 的ASCII值是:10
6、在这些字符中ASCII码值从0~31 这32个字符是不可打印字符,⽆法打印在屏幕上观察
打印部分字符(字符的打印要用到"%c"):
int main()
{for (int i = 32; i <= 127; ++i){printf("%c ", i);if (i % 16 == 15){printf("\n");}}return 0;
}
字符串和'\0'
在C语言中如何表示字符串呢?
使用双括号括起来的一串字符就称为字符串,如:"abcd"就是一个字符串
而字符就用单引号括起来,如'a','b'
字符串的打印格式就用"%s"
int main()
{printf("%s\n", "abcdef");return 0;
}
以上面的代码中字符串为例,"abcdef"中看起来就只有6个字符,但他其实还隐藏了一个”\0“的转义字符,而''\0"是字符串结束的标志
那我们来如何证明"\0"是字符串的结束标志呢?
int main()
{char c1[] = "abcdef";char c2[] = { 'a','b','c','d','e','f' };printf("%s\n", c1);printf("%s\n", c2);return 0;
}
那为什么会出现这种情况呢?
根据这张调试图就可以知道 ,c1的字符串后面有一个'\0',而c2却没有
由此可知:c2中没有表明'\0'的位置,这就意味着打印完c2中的字符后,程序会继续执行,直到遇到一个随机的'\0',才会结束
那如果我们想用c2的形式打印正确的字符就需要将'\0'也输入进去
char c2[]={'a','b','c','d','e','f','\0'};
转义字符
在字符中有一堆特殊的字符就叫做转义字符,在前面我们所讲到的'\n'、'\0'就是转义字符
转义字符:顾名思义就是转变原来意思的字符
由上面的程序及运行结果可知,一个'n'在'\'的修饰后,意思就发生了变化,从一个不同的字符变为转定义为换行的意思
然而在C语言中许多转义字符:
\? :在书写连续多个问号时使⽤,防⽌他们被解析成三字⺟词,在新的编译器上没法验证
\' :⽤于表⽰字符常量'
\" :⽤于表⽰⼀个字符串内部的双引号
\\ :⽤于表⽰⼀个反斜杠,防⽌它被解释为⼀个转义序列符
\a :警报,这会使得终端发出警报声或出现闪烁,或者两者同时发⽣
\b :退格键,光标回退⼀个字符,但不删除字符
\n :换⾏符
\t :制表符,光标移到下⼀个⽔平制表位,通常是下⼀个4/8的倍数
\ddd :d d d表⽰1~3个⼋进制的数字
\xdd :d d表⽰2个⼗六进制数字
\t :制表符,光标移到下⼀个⽔平制表位,通常是下⼀个4/8的倍数
\ddd :d d d表⽰1~3个⼋进制的数字,如:'\130'=1*8^2+3*8^1+0*8^0=88=X
根据这个转义字符可知,'\0'其实就是它的一种,是null字符,表示无内容
在字符串printf()打印或用strlen()计算字符串长度时,遇到'\0'就停止
\xdd :d d表⽰2个⼗六进制数字,如:'\x30'=3*16^1+0*16^0=48=0
注:
转义字符也是字符的一种,所以在计算字符串长度的是会算做一个字符
语句
C语言的代码是由一条一条语句组成,而C语言中语句可以分为以下五类:
1、空语句
2、表达式语句
3、函数调用语句
4、复用语句
5、控制语句
空语句:这种是最简单,一个分号就是一条语句,就是空语句
int main()
{;return 0;
}
空语句的使用场景:一般是出现在这个地方需要一条语句,而这个语句不需要做任何事情,就可以在这里写一条空语句
表达式语句:就是在表达式后面加上分号
int main()
{int a=1,b=2;a=b+1;return 0;
}
函数调用语句:在函数调用的时候,也会在后面加上分号,那这就是函数调用语句
#include <stdio.h>int Add(int x, int y)
{return x+y;
}int main()
{printf("hehe\n");//函数调⽤语句int ret = Add(2, 3);//函数调⽤语句 return 0;
}
复合语句:就是前面讲过的代码块,成对括号中的代码就构成一个代码块,也被称为复合函数
#include<stdio.h>
void print(int arr[], int sz) //函数的⼤括号中的代码也构成复合语句
{int i = 0;for(i=0; i<sz; i++){printf("%d ", arr[i]);}
}
int main()
{int i = 0;int arr[10] = {0};for(i=0; i<10; i++) //for循环的循环体的⼤括号中的就是复合语句{arr[i] = 10-i;printf("%d\n", arr[i]);}return 0;
}
控制语句:该语句用于控制程序的执行流程,以实现程序的各种结构方式(C语⾔⽀持三种结构:顺序结构、选 择结构、循环结构),它们由特定的语句定义符组成,C语有九种控制语句。
可分成以下三类:
1. 条件判断语句也叫分⽀语句:if语句、switch语句;
2. 循环执⾏语句:do while语句、while语句、for语句;
3. 转向语句:break语句、goto语句、continue语句、return语句。
这里就不多缀叙,后面的文章会讲解到
注释
注释是对代码的说明,编译器会忽略注释,也就是说,注释对实际代码没有影响。
注释的两种形式
1、/**/
2、//
注:
在程序编译时,注释会被替换成一个空格,这就是/**/这种注释方式可以在插在行内
两种方式都不能放在双引号中,放在双引号中会变成字符串的一部分,解释为普通符号,失去注释作用
相关文章:

C语言常见概念
目录 第一个C语言程序 main函数 写法: printf和库函数 printf()函数 库函数 关键字 字符和ASCII码表 字符串和\0 转义字符 语句 注释 注释的两种形式 第一个C语言程序 #include<stdio.h>//第一个c语言程序 int main() {printf("Hello World…...

AI代码生成器如何重塑前端开发的工作环境
近年来,人工智能(AI)技术迅猛发展,深刻地改变着各行各业的工作方式。在软件开发领域,AI写代码工具的出现更是掀起了一场革命,尤其对前端开发工程师的工作环境和协作方式产生了深远的影响。本文将深入探讨AI…...

设计模式-结构型-外观模式
在软件开发中,随着功能的不断迭代,系统会变得越来越复杂,模块之间的依赖关系也会越来越深。这种复杂性会导致代码难以理解、维护和扩展。而外观模式(Facade Pattern)正是为了解决这一问题而生的。 一、外观模式简介 …...

8.flask+websocket
http是短连接,无状态的。 websocket是长连接,有状态的。 flask中使用websocket from flask import Flask, request import asyncio import json import time import websockets from threading import Thread from urllib.parse import urlparse, pars…...

ARM Cortex-M3/M4 权威指南 笔记【二】架构
一、架构 1.1 架构简介 Cortex-M3/M4 处理器都基于 ARMv7-M 架构。最初的 ARMv7-M 架构是随着 Cortex-M3 处理器一同引入的,而在 Cortex-M4 发布时,架构中又额外增加了新的指令和特性,改进后的架构有时也被称为 ARMV7E-M。要了解 ARM7-M 和…...

HCIA项目实践--静态路由的拓展配置
7.7 静态路由的拓展配置 网络中的两个重要思想: (1) 实的不行来虚的; (2) 范围太大,划分范围。(分治) 7.7.1 负载均衡 (1)定义 负载均衡是一种网…...

STL中list的模拟实现
文章目录 1. 前言and框架2. 相对完整的框架3. 模拟实现接口1. 迭代器的引入2. 迭代器的区分list迭代器迭代器的构造list迭代器的实现模拟指针解引用前置和前置--后置和--迭代器!迭代器-> list的const迭代器迭代器模板迭代器是否需要析构,拷贝构造&…...

计算机网络知识速记:HTTP1.0和HTTP1.1
计算机网络知识速记:HTTP1.0和HTTP1.1 1. 基本概念 1.1 HTTP1.0 HTTP1.0是1996年发布的第一个正式版本,主要用于客户端与服务器之间的简单请求和响应交互。它的设计理念相对简单,适合处理一些基本的网页服务。 1.2 HTTP1.1 HTTP1.1是HTT…...

Apache Kafka 中的认证、鉴权原理与应用
编辑导读:本篇内容将进一步介绍 Kafka 中的认证、鉴权等概念。AutoMQ 是与 Apache Kafka 100% 完全兼容的新一代 Kafka,可以帮助用户降低 90%以上的 Kafka 成本并且进行极速地自动弹性。作为 Kafka 生态的忠实拥护者,我们也会持续致力于传播 …...

DeepSeek自然语言处理(NLP)基础与实践
自然语言处理(Natural Language Processing, NLP)是人工智能领域的一个重要分支,专注于让计算机理解、生成和处理人类语言。NLP技术广泛应用于机器翻译、情感分析、文本分类、问答系统等场景。DeepSeek提供了强大的工具和API,帮助我们高效地构建和训练NLP模型。本文将详细介…...

激光工控机在精密制造中的应用与优势
在精密制造中,激光工控机可以用于许多场景例如 激光切割与雕刻:用于金属、塑料、陶瓷等材料的精密切割和雕刻,适用于汽车、航空航天、电子等行业;可实现复杂图案和高精度加工,满足微米级精度要求。 激光焊接…...

Docker换源加速(更换镜像源)详细教程(2025.2最新可用镜像,全网最详细)
文章目录 前言可用镜像源汇总换源方法1-临时换源换源方法2-永久换源(推荐)常见问题及对应解决方案1.换源后,可以成功pull,但是search会出错 补充1.如何测试镜像源是否可用2.Docker内的Linux换源教程 换源速通版(可以直…...

12.14 算法练习
1. 每日温度 算法思路 1. 单调栈的作用:记录我们遍历过的元素,与当前的元素方便对比,本质是以空间换时间; 2. 比较当前元素与栈顶元素的大小,当当前元素大于栈顶元素时,持续弹出栈顶元素下标,…...

ASP.NET Core SignalR的分布式部署
假设聊天室程序被部署在两台服务器上,客户端1、2连接到了服务器A上的ChatRoomHub,客户端3、4连接到服务器B上的ChatRoomHub,那么客户端1发送群聊消息时,只有客户端1、2能够收到,客户端3、4收不到;在客户端3…...

Express 中间件
在构建 Web 应用程序时,中间件(Middleware)扮演着至关重要的角色。它允许你定义一系列的函数来处理 HTTP 请求和响应过程中的各种任务。Express.js 是 Node.js 上最流行的框架之一,以其简洁且强大的中间件机制著称。本文将深入探讨…...

ABB能源自动化选用宏集Cogent DataHub避免DCOM问题,实现高效、安全的数据传输
案例概况 ABB能源自动化公司通过宏集Cogent DataHub软件将电厂设施的数据实时传输到公司办公室,实现了OPC隧道/镜像解决方案,在电厂和公司网络之间建立了一个安全、可靠的连接,确保数据传输的高度安全,减少入侵风险。 ࿰…...

springboot239-springboot在线医疗问答平台(源码+论文+PPT+部署讲解等)
💕💕作者: 爱笑学姐 💕💕个人简介:十年Java,Python美女程序员一枚,精通计算机专业前后端各类框架。 💕💕各类成品Java毕设 。javaweb,ssm…...

【Elasticsearch】分析器的构成
在Elasticsearch中,分析器(Analyzer)是一个处理文本数据的管道,它将输入的文本转换为一系列词元(tokens),并可以对这些词元进行进一步的处理和规范化。分析器由以下三个主要组件构成:…...

Python 调用 Azure OpenAI API
在人工智能和机器学习快速发展的今天,Azure OpenAI 服务为开发者提供了强大的工具来集成先进的 AI 能力到他们的应用中。本文将指导您如何使用 Python 调用 Azure OpenAI API,特别是使用 GPT-4 模型进行对话生成。 准备工作 在开始之前,请确保您已经: 拥有一个 Azure 账户…...

数据结构 算法时间复杂度和空间复杂度
一、算法好坏的度量 【事前分析法】 算法设计好后,根据算法的设计原理,只要问题规模确定,算法中基本语句执⾏次数和需求资源个数 基本也就确定了。 ⽐如求1 2 3 ... n − 1 n ,可以设计三种算法: 算法Aÿ…...

CNN-BiGRU卷积神经网络双向门控循环单元多变量多步预测,光伏功率预测
CNN-BiGRU卷积神经网络双向门控循环单元多变量多步预测,光伏功率预测 代码下载:CNN-BiGRU卷积神经网络双向门控循环单元多变量多步预测,光伏功率预测 一、引言 1.1、研究背景及意义 随着全球能源危机和环境问题的日益严重,可再…...

钉钉位置偏移解决,钉钉虚拟定位打卡
虚拟定位打卡工具 一,介绍免费获取工具 一,介绍 提到上班打卡,职场人的内心戏估计能拍成一部连续剧。打卡,这俩字仿佛自带“紧箍咒”,让无数打工人又爱又恨。想象一下,你气喘吁吁地冲进办公室,…...

【面试集锦】如何设计SSO方案?和OAuth有什么区别?
如何设计SSO方案?和OAuth有什么区别?--楼兰 带你聊最纯粹的Java 如果面试问你,你会做一个权限系统吗?那你肯定会说做过。不就是各种登录、验证吗。我做的第一个CRUD应用就是注册、登录。简单!但是,如果问你在工作中真的做过权限系统吗?其实很多人都只能默默摇摇头。因…...

Python 基于 OpenCV 的人脸识别上课考勤系统(附源码,部署教程)
博主介绍:✌2013crazy、10年大厂程序员经历。全网粉丝12W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&a…...

vcredist_x64.exe 是 Microsoft Visual C++ Redistributable 的 64 位版本
vcredist_x64.exe 是 Microsoft Visual C++ Redistributable 的 64 位版本,它提供了运行基于 Visual C++ 编写的应用程序所需的库文件。许多 Windows 应用程序都依赖这些库来正常运行,特别是使用 Visual Studio 编译的程序。 用途和重要性: 运行时库:vcredist_x64.exe 安装…...

Tailwind CSS 的核心理念
实用优先(Utility-First) Tailwind CSS 的最核心理念是"实用优先"。这种方法颠覆了传统的 CSS 开发方式,不再编写自定义的类名和样式规则,而是通过组合预定义的工具类来构建界面。这种方式带来了以下优势: …...

集成学习(二):从理论到实战(附代码)
接上一篇续写《集成学习(一):从理论到实战(附代码)》 五、实用算法 5.1 随机森林 随机森林在数据集的各个子样本上拟合许多决策树分类器,并使用平均来提高预测精度和控制过拟合。每一个分类器拟合了一部分随机样本,…...

HTML 链接
HTML 链接 引言 HTML(超文本标记语言)是构建网页的基础,而链接是网页中不可或缺的元素。链接不仅能够连接到其他网页,还能实现网页内部内容的跳转。本文将详细介绍HTML链接的用法、属性以及如何实现链接的优化。 HTML链接的基本…...

【机器学习】数据预处理之scikit-learn的Scaler与自定义Scaler类进行数据归一化
scikit-learn的Scaler数据归一化 一、摘要二、训练数据集和测试数据集的归一化处理原则三、scikit-learn中的Scalar类及示例四、自定义StandardScaler类进行数据归一化处理五、小结 一、摘要 本文主要介绍了scikit-learn中Scaler的使用方法,特别强调了数据归一化在…...

android的第一个app项目(java版)
一.学习java重要概念 java的基本类型的语言方法和C语言很像,这都是我们要学的东西和学过的东西。那些基础东西,就不和大家讨论了,一起看一下java的一些知识架构。 1.封装 封装是面向对象编程中的一个核心概念,它涉及到将数据和操…...