学习C语言笔记:初始C语言

news2024/12/30 3:03:23

学习内容:

1.运算符——=;

2.函数——main()、printf();

3.编写一个简单的C程序;

4.创建整型变量,为其赋值并在屏幕上显示其值;

5.换行字符;

6.如何在程序中写注释,创建包含多个函数的程序,发现程序的错误;

7.什么是关键字。

从一个简单的C程序示例开始

first.c程序如下,该程序演示了用C语言编程的一些基本特性。

#include<stdio.h>
int main(void)                           /*一个简单的C程序*/
{
    int num;                         /*定义一个名为num的变量*/
    num=1;                           /*为num赋值*/
    printf("I am a simple ");        /*使用printf()函数*/
    printf("computer.\n");
    printf("My favorite number is %d because it is first.\n",num);

    return 0;
}

通过查看此程序代码你会认为该程序会在屏幕上打印一些内容,那就对了!但是光看程序也许并不知道打印的具体内容,所以,运行该程序,并查看结果。首先,用你熟悉的编辑器创建一个包含first.c所有内容的文件。给该文件命名,并以.c作为扩展名,以满足当前系统对文件名的要求。然后编译并运行该程序。如果运行正常,该程序的输出应该是:

I am a simple computer.                                                                                                

My favorite number is 1 because it is first.

程序中的\n和%d是什么呢?接下来学习关于上面程序中每一行代码的含义。

#include:预处理器指令;

int main():main()总是第1个被调用的函数,是组成函数的语句;

function a():函数,函数是组成C程序的构造块;

 C语言中的6种语句:

标号语句;符合语句;表达式语句;选择语句;迭代语句;跳转语句;

#include<stdio.n>                包含另一个文件

该行告诉编译器把stdio.h中的内容包含在当前程序中。stdio.h是C编译器软件包含的标准部分,他提供键盘输入和屏幕输出的支持。#include<stdio.h>的作用相当于把stdio.h文件中的所有内容都输入该行所在的位置。实际上,这是一种“粘贴-拷贝”的操作。include文件提供了一种方便的途径共享许多程序共有的信息。

#include这行代码是一条C预处理器指令。通常,C编译器在编译前会对源代码做一些准备工作,即预处理。

所有的C编译器软件包都提供stdio.h文件。该文件中包含了供编译器使用的输入和输出函数(如printf())信息。该文件名的含义是标准输入/输出头文件。通常,在C程序顶部的信息集合被称为头文件。

头文件包含了编译器创建最终可执行程序要用到的信息。例如,头文件中可以定义一些常量,或者指明函数名以及如何使用它们。但是,函数的实际代码在一个预编译代码的库文件中。简而言之,头文件帮助编译器把你的程序正确地组合在一起。使用哪些函数要包含对应的头文件。例如,使用printf()函数,必须包含stdio.h头文件。

int main(void)                        函数名

C程序包含一个或多个函数,它们是C程序的基本模块。程序first.c中有一个名为main()的函数。圆括号表明main()是一个函数名。int 表明main()函数返回一个整数,void 表明main() 不带任何参数。int 和 void是标准ANSI C定义main()的一部分。一般,void也是可以省略的。

C程序一定从main()函数开始执行。除了main()函数,你可以任意命名其他函数,而且main()函数必须是开始的函数。圆括号的作用是什么呢?用于识别main()是一个函数。

/*一个简单的C程序*/                注释

注释在/*和*/两个符号之间,这些注释能提高程序的可读性。注意,注释只是为了帮助读者理解程序,并不会参与编译与运行。还有另一种风格的注释:

//一个简单的C程序

这种注释仅限于单行,一行末尾就标志着注释的结束,所以这种风格的注释只需在注释开始处标明//符号即可。 

{                                        函数体开始

左花括号表示函数定义开始,右花括号表示函数定义结束。

return 0;                                return 语句

C函数可以给调用方提供一个(或返回)数。目前,可暂时把该行看作是结束main()函数的要求。

int main(void)中的int表明main()函数应返回一个整数。C标准要求main()这样做。有返回值的C函数要有return语句。该语句以return关键字开始,后面是待返回的值,并以分号结尾,如果遗漏main()函数中的return语句,程序在运行至最外面的右花括号时会返回0。因此,可以省略main()函数末尾的return语句。但是,不要在其他有返回值的函数中漏掉它。

换行字符

printf()函数的双引号中的\n字符并未输出,这是为什么呢?\n的意思是换行。\n组合代表一个换行符。对于printf()而言,它的意思是“在下一行的最左边开始新的一行”。也就是说,打印换行符的效果与在键盘按下Enter键相同。既然如此,为何不在键入printf()参数时直接使用Enter键呢?因为编辑器可能会认为这是直接的命令,而不是存储在源代码中的指令。换句话说,如果直接按下Enter键,编辑器会退出当前行并开始新的一行。但是,换行符仅会影响程序输出的显示格式。

换行字符是一个转义序列。转移序列用于代表难以表示或无法输入的字符。如\t代表Tab键,\b代表Backspace键(退格键)。每个转义序列都以反斜杠字符(\n)开始。

什么是数据类型?如何命名变量?

C语言可以处理多种类型的数据,如整数、字符和浮点数。

可以用小写字母、大写字母、数字和下划线来命名变量。而且,名称的第一个字符必须是字母或下划线,不能是数字。C语言的名称区分大小写,即把一个字母的大写和小写视为两个不同的字符。

多个函数

上面程序中使用了printf()函数,那么,如何将自己的函数加入到程序中呢?

#include<stdio.h>
void butler(void);              /*ANSI/ISO C函数原型*/
int main(void)
{
    printf("I will summon the butler function.\n");
    butler();
    printf("Yes.Bring me some tea and writeable DVDs.\n");
    return 0;
}
void butler(void)                /*函数定义开始*/
{
    printf("You rang, sir?\n");
}

输出: 

 在该程序中butler()函数出现了3次。第1次是函数原型,告知编译器在程序中要使用该函数;第2次以函数调用的形式出现在main()中;最后一次出现在函数定义中,函数定义即是函数本身的源代码。

关键字和保留标识符

关键字是C语言的词汇。它们对C而言比较特殊,不能用它们作为标识符(如,变量名)。许多关键字用于指定不同的类型,如int。还有一些关键字(如,if)用于控制程序中语句的执行顺序。下表是C语言的一些关键字。

如果使用关键字不当(如,用关键字作为变量名),编译器会将其视为语法错误。还有一些保留标识符,C语言已经指定了它们的用途或保留它们的使用权,如果你使用这些标识符来表示其他意思会导致一些问题。因此,尽管它们也是有效的名称,不会引起语法错误,也不能随便使用。保留标识符包括那些以下划线字符开头的标识符和标准库函数名,如printf()。

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

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

相关文章

Docker网络下-自定义网络实战

通过前面两篇的学习,我们对docker网络及四大网络类型都了解了。本文,咱们就来学习docker的自定义网络。我们为什么需要自定义网络呢?是为了让各个主机分门别类,井井有条。方便关联,使得网络之间可以通过服务名进行通信。为什么在容器中,我们要通过服务名进行通信呢?那是…

分享一个门店会员管理系统模板

会员制对于很多人来说都不陌生&#xff0c;进入中国市场几十年的时间里在许多行业都得到了广泛应用。所谓会员制&#xff0c;是指通过向特定的消费群体发放会员卡&#xff0c;并由消费者缴纳会费或者充钱的形式可享受商家的价格折扣、服务等方面优惠的经营形式&#xff0c;从而…

数据库设计以及分布式事务的产生

一、数据库架构的演进 单点时代 1在早期互联网或者当前小型网站,一般数据库和APP都采用单点方式进行部署,系统简单,容易维护读写分离 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29随着互联网的发展,网站访问量越来越大,数据库最先达到瓶颈,…

jenkins环境基本配置

上一篇文章讲解了jenkins的安装&#xff0c;这一篇文章介绍jenkins安装后的基本配置 1.进入jenkins之后&#xff0c;选择右上角admin下拉框选择设置 2.修改密码&#xff0c;并重新登录 3. jenkins的汉化 3.1 Dashboard ➥ Mange Jenkins ➥ Manage Plugins插件管理 ➥ 已安装…

github上有什么好的unity开源项目?

大量项目来袭 一、github上的Unity开源项目 github上的Unity开源项目 项目名称&#xff1a;《TowerDefense》《TowerDefense》 项目链接&#xff1a;《TowerDefense》项目链接 项目简介&#xff1a; 基于 Unity 的塔防示例游戏&#xff0c;此项目主要用来上手和学习基于 Un…

为什么WordPress要禁止编辑主题和插件?如何进行设置呢?

一淘模板问大家为什么WordPress要禁止编辑主题和插件&#xff1f;如何进行设置呢&#xff1f;接下来我们一起了解一下。 首先&#xff0c;为了安全起见&#xff0c;WordPress的安全是非常重要的&#xff0c;禁止编辑主题和插件的许可&#xff0c;即使有人进来&#xff0c;也不…

C# 数据库 类库

一 ADO.NET 1 System.Data名称空间 2 这种访问数据库的技术叫ADO.NET 3 ADO.NET 实现数据库的访问 ①提供标准的CRUD接口&#xff1b; ② 对不同的数据库提供统一的访问接口&#xff1b; 二 ADO.NET技术的发展 1 ODBC&#xff08;Open Database Connection) 2 DAO(Data …

excel文件管理:如何进行密码保护和破解? 上篇

对于一个公司&#xff0c;或者个人来说&#xff0c;有时候我们的数据往往需要加密。比如公司的经营状况和缴纳的税收有关系&#xff0c;人事档案中有每位员工的个人信息和工资组成说明&#xff0c;这些都是不需要无关人员知道的。微软对于EXCEL的设计就比较人性化&#xff0c;考…

如何搭建一套完整的数据指标体系?

如何搭建一套完整的数据指标体系&#xff1f; 你在工作中是不是这样的经常听到这样的对话&#xff1a; 老板&#xff1a;这次宣传活动总共带来了多少流量&#xff1f;你&#xff1a;大概有一万多人吧......老板&#xff1a;这次活动反响怎么样&#xff1f;你&#xff1a;有很多…

Linux操作系统实验3——进程切换

实验要求&#xff1a; 1.编写用户态程序&#xff0c;程序中需设计能引起进程状态发生变化的流程。 2.编写内核态模块&#xff0c;定时获取输入参数指定进程的运行状态。 3.通过内核态的记录指定进程运行状态变化的情况&#xff0c;需记录三种以上。 实验原理&#xff1a; 1. l…

有向图的拓扑序列

848. 有向图的拓扑序列 - AcWing题库 昨天看了这道题L3-031 千手观音 拓扑排序哈希表_他不是混子QAQ的博客-CSDN博客 就想着也用这道题的stl方法来试下 先来我的这个笨笨的方法&#xff0c;就当练习stl了&#xff0c;后面还有一个简便的stl STL知识点(刚知道&#xff1a; 对于…

linux系统中uboot的基本原理与实现方法

大家好&#xff0c;今天主要和大家聊一聊&#xff0c;U-boot的操作与实现方法。 目录 第一&#xff1a;U-boot基本简介 第二&#xff1a;u-boot烧写与启动方法 第三&#xff1a;uboot中信息查询命令 第一&#xff1a;U-boot基本简介 linux系统启动必须要有一个bootloade…

举个栗子~Tableau 技巧(248):使用参数和轴实现图表坐标轴的缩放

实际业务分析场景中&#xff0c;使用折线图来呈现业绩趋势分析时候&#xff0c;经常会遇到这样问题&#xff1a;某一段时间的业绩数值波动范围较小&#xff0c;折线图趋于平缓&#xff08;如下图&#xff09;&#xff0c;很难判断业绩的波动差异&#xff0c;也很难一眼看出哪个…

vulnhub DC系列 DC-3

总结&#xff1a;joomscan工具的使用&#xff0c;cve-2016-4557内核提权或者cve-2021-4034内核提权 下载地址 漏洞分析 信息收集 sql注入 写马 提权 反弹shell 内核提权 cve-2016-4557 cve-2021-4034 下载地址 Download:http://www.five86.com/downloads/DC-3.zip 使用…

npm发布自己的组件UI包(详细步骤,图文并茂)

目前做前端项目&#xff0c;一直采用npm install XXX 的方式去引用别人的组件包&#xff0c;调用方法。 其实在开发中&#xff0c;每个开发者基本都写过单独的组件&#xff0c;如何让自己的组件能够重复的利用&#xff0c;如何让别人也享受到您的成果&#xff0c;这里将一步一步…

【KMP算法】

KMP算法核心剖析&#xff1a; 关于KMP算法&#xff0c;建议先了解 BF算法 KMP算法是用来解决字符串匹配问题的高级算法&#xff0c;看完这篇文章&#xff0c;你应该能理解KMP算法。 KMP算法和BF算法唯一的区别在于&#xff1a;主串的&#xff49; 并不会回退&#xff0c;子…

java: “abstract 抽象类” 与 “ interface 接口” 的妙用之道

java: “abstract 抽象类” 与 “ interface 接口” 的妙用之道 每博一文案 有句很扎心的话&#xff0c;我对这世间唯一的不满就是这世间总是让更懂事的人承受的更多。 生活中&#xff0c;往往你越善解人意&#xff0c;就越没人在乎你的委屈&#xff0c;时间&#xff0c;让你学…

Linux下使用nginx搭建文件服务器

搭建后访问效果图 安装nginx 1、安装依赖 yum install -y gcc pcre-devel zlib-devel openssl openssl-devel 2、下载nginx mkdir -p /www/nginx cd /www/nginx wget http://nginx.org/download/nginx-1.21.0.tar.gz tar -xvf nginx-1.21.0.tar.gz 3、安装nginx cd nginx…

redis远程操作常见问题

Connection error: Connection refused 出现该错误的原因是未开启远程连接&#xff0c;将本地ip注释掉&#xff1a; Connection error: The remote host closed the connection 出现该错误的原因是&#xff0c;需要关闭安全模式&#xff0c;才可运行其他ip访问&#xff1a; 当…

websocket简单实现

websocket简单实现 websocket是HTML5下一种新的协议&#xff0c;本质上websocket是一个基于tcp的协议。它实现了浏览器与服务器之间的双向通信&#xff0c;能更好的节省服务器资源和宽带并实现实时的通信。 websocket的几个优点? 1、使用的资源少&#xff0c;因为它的头更小。…