我是靠谱客的博主 超级金鱼,最近开发中收集的这篇文章主要介绍C语言初阶基础(一)一、C语言简介二、第一个C语言程序-------Hello World三、变量及常量四、基本数据类型五、字符串及字符,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

一、C语言简介

二、第一个C语言程序-------Hello World

三、变量及常量

1、变量

2、局部变量和全局变量

3、变量的作用域和生命周期

4、变量的命名规则

5、常量

 5.1、字面常量

5.2、const修饰的常变量

 5.3、#define定义标识符常量

5.4、枚举类型

四、基本数据类型

五、字符串及字符

1、字符串

2、字符

1.1、ASCII码表

1.2、转义字符


一、C语言简介

C语言是一门面向过程的计算机编程语言,与C++、C#、Java等面向对象编程语言有所不同。

C语言最初是由机器语言发展为B语言,再之后由以B语言为基础发展而来的,C语言之所以命名为C,是因为C语言源自Ken Thompson发明的B语言,而B语言则源自BCPL语言。

C语言发展之初,许多使用c语言的公司各自对c语言进行优化和修改,导致C语言没有一个具体的标准。C社区意识到需要一个更全面的标准,鉴于此美国国家标准协会(ASCI)开发了一套新标准(ASCI C)该标准定义了C语言和C标准库。再之后1989年,ANSI发布了第一个完整的C语言标准——ANSI X3.159-1989,简称“C89”,不过人们也习惯称其为“ANSI C”。C89在1990年被国际标准化组织(International Standard Organization,ISO)一字不改地采纳,ISO官方给予的名称为:ISO/IEC 9899,所以ISO/IEC9899:1990也通常被简称为“C90”。1999年,在做了一些必要的修正和完善后,ISO发布了新的C语言标准,命名为ISO/IEC 9899:1999,简称“C99”。 [6]  在2011年12月8日,ISO又正式发布了新的标准,称为ISO/IEC9899:2011,简称为“C11”。

C语言作为一门计算机编程语言,适合刚踏入编程领域的新人,但我们不能只单单学习c语言这一门语言而已,后续为自己定位一个前景发展方向,并沿着该方向学习下去。下来我将逐一介绍入门C语言的一些基础知识。


二、第一个C语言程序-------Hello World

作为每一个学习编程的人,多多少少刚开始的程序基本都是HelloWorld。HelloWorld  YYDS!

我们自己所编写的代码是一个.c的文件,但最终是编译成一个.exe文件(可执行文件),中间会经过编译器编译(编译中又经过预编译,编译,汇编三个步骤),链接后才转换成可执行文件。写c语言代码,我选择的VS2019。VS2019是集成开发环境(集多种功能于一体,有编辑、编译、链接、调试功能),其中调用的是cl.exe编译器。常见的编译器有gcc、Clang、MSVC。

(1)第一步:在写第一个代码前,我们需要新建一个工程项目。

 选择一个空项目

创建之后,进入VS里的界面如下:

 (2)第二步:我们需要在左侧解决方案里创建一个源文件,再进行编辑代码。

 在命名的时候建议将后缀改为.c

 如果在自己的VS界面里没有看到右侧的解决方案,可以从右上角的视图里显示出来。 

 (3)第三步:进行编写

按crtl+F5对代码进行运行,运行结果为:

 可能刚看到这个代码,你们也许有很多疑问,但接下来会对这些内容一一讲解。

写c语言代码的时候,首先要知道main函数,main函数是程序的入口,程序是从main函数的第一行开始执行的,main函数是主函数有且仅有一个。

对于main(),在c语言里称之为主函数,而每一个函数前回带有一个返回数据类型,此处的int是整型。那我们能不能把int省略,答案是可以,函数会默认返回int,但建议别这么做,要返回什么类型就写什么类型。那可以不返回任何类型吗?把int改为void可以将该函数改为无返回类型,C99之前main函数是直接改int为void,但现在没人这么写了。老老实实用int吧!

 printf是一个库函数,库函数的使用得包含一个头文件<stdio.h>,此处stdio拆分出std,i,o分别是标准库,输入,输出三个意思,对应标准输入输出头文件。那要怎么包含?只要用#include 对其包含即可 

三、变量及常量

1、变量

变量即可变的量,在程序中可以随时改变的值。例如一些数据,我们的年龄,薪资之类可变的量称为变量。在c语言中,我们经常会对一些变量进行赋值和初始化,什么是赋值和初始化呢?

每一个变量都有其对应的数据类型,而在给该变量定义类型后,需要对其赋值(赋给它一个数值)。在定义一个变量并赋值的过程称为初始化。

 例如以下代码(定义了一个整型变量a):

 那我们是否可以只定义变量,而不初始化呢?

不可以,我们在定义一个局部变量时,实际是在一个内存空间里创建了一个栈(换句话来说是一个存储值的地方),要是没有对其初始化,栈里所存储的该值所对应的值是系统默认初始化的一个随机值,但正常情况下编译后是会报错的。

下面用printf打印出未初始化的a。

 

2、局部变量和全局变量

局部变量可以理解成在主函数内部定义的变量为局部变量,而全局变量是定义在主函数外的变量

例如:

 

 【注意】:

(1)局部变量优先级比全局变量高。比如同时定义一个变量a,全局变量定义为50,局部变量定义为25,打印出结果会是25.因为先定义a为50后,在主函数里定义会覆盖原先的50.

(2)main()函数花括号内定义的变量为局部变量,花括号外的为全局变量。

(3)C99标准前有一个规定:变量要创建在当前代码块的最前面;在C99标准之后的语法就支持了,变量在哪里使用,就在哪里定义。

3、变量的作用域和生命周期

作用域

        作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性代码范围就是这个名字的作用域。说白了,作用域就是一个设定范围,就是你在哪里有权限,哪里就是你的作用域。

1、局部变量的作用域是变量所在的局部范围

2、全局变量的作用域是整个工程的

生命周期:

        变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段;

关于生命周期,main函数结束就是程序结束,我们可以理解成程序和main函数的生命周期是一样;作用域也有生命周期,离开了作用域,作用域里面的变量会销毁,出了作用域就用不了。

1、局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束

2、全局变量的生命周期是:整个程序的生命周期

此处,b的作用域是里面的花括号内的,出了花括号,就不在它的设定范围(作用域)了

而此处a定义在main里的设定范围内,它以下的语句都是它是设定范围;

全局变量的设定范围更大,任意地方都可以使用

4、变量的命名规则

我们必须给变量取一个合适的名字,就好像每个人都有自己的名字一样,否则就难以区分了。

(1)变量名必须以字母或下划线打头,名字中间只能由字母、数字和下划线“_”组成;

(2)变量名的长度不得超过255个字符;

(3)变量名不能是关键字;


5、常量

常量即是不变的量,在整个程序运行过程中没有变化的,称为常量。

C语言中常见常量有:

  • 字面常量
  • const修饰的常变量
  • #define定义的标识符常量
  • 枚举常量

 5.1、字面常量

我们在程序中定义的什么,整型,浮点型,字符型等,都是字面常量。


5.2、const修饰的常变量

经const修饰后的变量的值,是无法再进行更改的。修饰之后的变量称为常变量,但其本质还是变量。

此处经修饰后,如果再对齐进行赋值,则会报错。

【注意】:

(1)在初始化数组的时候,里面下标标的是常量表达式,不能是变量表达,即使是改成const也不行,const修饰完后是变成常变量,本质上还是变量(数组是存储同一种数据类型多个元素的集合,可以看成是存储相同东西的容器)。

(2)VS2019不支持C99


 5.3、#define定义标识符常量

#define命令是C语言中的一个宏定义命令,它用来讲一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。该命令有两种格式:一种是简单的宏定义(不带参数的宏定义),另一种是带参数的宏定义。(后续会详细对该内容进行说明)

(1)格式:#define <宏名/标识符> <字符串>

(2)标识符/宏名有命名规则:一般用大写;宏定义末尾不加分号“ ;”


5.4、枚举类型

枚举,就是一一列举,将一些常量信息一一列举出来。

生活中有很多值是可以一一列举的,有些值不适合,例如性别:男,女,保密是可以列举出来。

下面代码是枚举类型的基本格式,枚举类型里的可能取值就是枚举常量,彼此用逗号分开。(注意花括号结尾要带分号)

枚举类型里的成员如果按整型打印出来,是以此按从0开始排序的。

四、基本数据类型

数据类型所占字节大小
int(整型)4
short(短整型)2
long(长整型)4
long long(长整型)8
flaot(单精度浮点型)4
double(双精度浮点型)8
bool(布尔类型)1
char(字符型)1

以上的数据类型是我们以后会经常用到的。

所谓字节是什么?

        字节(Byte)是计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符。1个字节相当于8个bit。

数据存储是以“字节”(Byte)为单位,数据传输大多是以“位”(bit,又名“比特”)为单位,一个位就代表一个0或1(即二进制)


比如一个整型所占大小为4个字节,对应32个bit位,而每一个比特位只有1和0两种,那么int类型的取值范围可以认为是0~2^32,但在计算机中存储时,最高位也就是第32位是一个符号位(用来表示正负关系的,1表示为负,0表示为正),因此int类型真正的取值范围应为-1~-2^31和0~2^31-1.

其他数据类型也同理。(后续会对该部分进行讲解)

本章对每一个数据类型暂不做详细介绍,之后会在一个章节里详细讲解。


五、字符串及字符

1、字符串

"hello worldn"

像这种有双引号引起来的一串字符称为字符串字面量,简称为字符串。

输出字符使用 %c,输出字符串使用 %s。

【注意】:字符串的结束标志是一个‘’的转义字符,在用strlen()计算字符串长度的时候''是结束标志,不算作字符串内容。

以下面代码为例:

 第一次打印arr的时候,能正常打印出abcd;可第二次打印却打印出了不一样的结果。

每一个字符串都是以''作为结束标志的,双引号引起来的字符串是自带'',因此在我们打印的时候计算机能识别到结束标志,正常的进行打印。

可arr2里并没有结束标志。

 接下来继续按F10运行代码,结果可以看出arr2数组里确实没有结束标志。

可为什么打印出来的不是预期想要的呢?

以strlen()计算字符串长度为例

 第一个数组arr,一共四个字符(''结束标志字符,strlen()在碰到结束标志时也停止计算长度了,因此长度计算不包括结束标志字符)。

可第二数组却有16个,这是因为,当在计算该数组长度时,一直没有识别到结束标志,计算机会继续不断识别,直到识别到结束标志''为止,而当识别到的时候,期间的长度即是该字符串长度(而该字符串长度往往都是随机的,不是固定的,什么时候识别到结束标志也是不知道的)。

 我们只要将arr2数组中手动添加一个'',就可以解决这种问题

2、字符

字符类型char,只能用单引号’ ‘来包围,不是用双引号" “包围。而字符串只能用双引号”
"包围,不能用单引号’ '包围。

1.1、ASCII码表

ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码方案,它主要用于显示现代英语和其他西欧语言,它是现今最通用的单字节编码方案,等同于国际标准ISO/IEC646。

ASCII码规范于1967年第一次发布,最后一次更新是在1986年,它包含了33个控制字符(具有特殊含义无法显示的字符)和95个可显示字符。
 

 我们可以通过对应的字符来转换成相应的整型,也可以以整型的形式来表示对应的字符。该图不必背诵,只需记住几个经常使用的(小写字母97和大写字母65,字母表一共26个,一一对应)。

1.2、转义字符

转义字符说白了,就是转变原来字符的意思。

转义字符释义
?在书写连续多个问号时使用,防止他们被解析成三字母词
'

用于表示字符常量'

''用于表示一个字符串内部的双引号
\用于表示一个反斜杠,防止它被解释为一个转义序列符
a警告字符,蜂鸣
b退格符
f换页符
n换行符
t水平制表符
v垂直制表符
dddddd表示1~3个八进制数字,如:130表示十进制88,对应asci码X
xdddd表示2个十六进制数字.如:x30     表示0

【注意】——————三字母词

像此处的??)即为三字母词

三字母词现在很多编译器都不支持,如果编译器能检测出三字母词是不会执行出结果的,如果想打印出该结果,可以用转义字符打印出来.

练习题:

//程序输出什么?
#include <stdio.h>

int main()
{
    printf("%dn",strlen("abcdef"));
    //  62被解析为一个转义字符
    printf("%dn",strlen("c:test628test/.c"));
    return 0;
}

 其运行结果为:

转义字符也为一个字符,其中'62'后面的8不为转义字符里的,因为8进制表示的字符不包括8,只有0~7.

 


本章的内容就只有这些如有错误,请提出更正,谢谢。

最后

以上就是超级金鱼为你收集整理的C语言初阶基础(一)一、C语言简介二、第一个C语言程序-------Hello World三、变量及常量四、基本数据类型五、字符串及字符的全部内容,希望文章能够帮你解决C语言初阶基础(一)一、C语言简介二、第一个C语言程序-------Hello World三、变量及常量四、基本数据类型五、字符串及字符所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部