c语言初阶 -- 初识c语言篇(上)

简介: c语言初阶 -- 初识c语言篇(上)


前言

学习c语言是一项非常系统的工程,要循序渐进,以下文章只是初识c语言,就是简单认识一下c语言,从简单的认识c语言,由浅入深,学习一门编程语言是一条艰辛与快乐共存的一条路,一定要坚持下去 。

首先对c语言有一个简单的认识,再对这些基础的知识进行扩展,进行更加细致的学习。

一,什么是C语言

C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易

的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语

言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的

C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超

级电脑等作业平台。

二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制

定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。 [1] 目前2011年12月8

日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标

准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉

字编程。

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

其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。

二,第一个c语言程序

#include  <stdio.h>
int main()
{
   printf("Hello word");
   return 0;
}

这段代码的功能是在屏幕上打印一个 “Hello word”。

代码解析;

第一行:头文件,在使用c语言自带的库函数之前一定要包含对应的 ,“头文件”。

第二行:main函数,在c语言中main函数是程序的入口,程序是从main函数开始执行的,main函数在程序中只能存在一个。

第三行:printf,printf是一个库函数 - c语言编译器提供的一个现成的函数,直接可以使用,其功能就是在屏幕上打印数据。

第四行:return 0 - 返回值。

这就是第一个c语言程序的内容;同学们有没有get到呢?

三, 数据类型

char     //字符数据类型
short    //短整型
int     //整形
long     //长整型
long long  //更长的整形
float    //单精度浮点数
double    //双精度浮点数

int类型

数据类型大小是 4 字节,能表示的数值范围是

-2^(32-1) – 2^(32-1)-1 (即 -2147483648 ~ 2147483647)

打印类型是 %d ,使用格式为 int 名 = 值;

short类型

数据类型大小是 2 字节,能表示的数值范围是

-2^(16-1) – 2(16-1) -1 (即 -32768 ~ 32767)

打印类型是 %hd ,使用格式为 short 名 = 值;

long类型

数据类型大小是 4 字节,能表示的数值范围是

-2^(32-1) – 2^(32-1)-1 (即 -2147483648 ~ 2147483647)

打印类型是 %ld ,使用格式为 int 名 = 值;

long long类型

数据类型大小是 8 字节,能表示的数值范围是

-2^(63) ~ 2^(63)-1 (这个数足够大了)

打印类型是 %lld ,使用格式为 long long 名 = 值;

单精度浮点型(float)

单精度浮点型的大小是 4 字节

float v1 = 4.345;

unsigned float v1 = 4.345; 无符号的 float 数据

格式匹配符是:%f , 默认保留 6 位小数。

双精度浮点型(double)

双精度浮点型的大小为 8 字节

double v2 = 5.678;

unsigned double v2 = 5.678; 无符号的 double 数据

当然在c语言里面,肯定不止这些数据类型,比如在c99里面还引入了:Bool(布尔),long double

各种c语言数据类型在内存中所占空间的大小(单位:字节)

注:sizeof - 是一个操作符,是计算类型 / 变量所占内存空间的大小。

注:%d - 是一10进制的形式打印一个整数 , \n – 是换行

四,变量,常量

变量和常量在c语言中就是一个容器,通常是一块内存。

生活中有些值是不变的(比如:圆周率,性别,身份证号码,血型等等)

有些值是可变的(比如:年龄,体重,薪资等等)

不变的值,在c语言中用常量的概念来表示,变化的值用变量来表示。

4.1定义变量的方法

int age = 150;
float wei = 42.1f;
char ch ='w';

方法如下:

类型 变量名;

类型 变量名 = 初始值 (最好给一个初始值)

4.2变量的命名

只能由字母(包括大写和小写)、数字和下划线( _ )组成。

不能以数字开头。

长度不能超过63个字符。

变量名中区分大小写的。

变量名不能使用关键字。

起名字是非常讲究的,最好要有意义。

4.3变量的分类、

局部变量 ;函数内部定义的变量只在本函数范围内有效,也就是只有本函数内才能引用它们,在此函数外不能使用这些变量

局部变量出现在三种地方:

(1)在函数的开头定义的变量

(2) 在函数内的复合语句内定义的变量

(3)形式参数

全局变量; 在函数外部定义的变量就是全局变量或外部变量;全局变量为该源文件中所有函数所共有,它的作用范围是从变量定义的位置到源文件结束

#include <stdio.h>
int a=20;   //全局变量
int main()
{
   int a=10; //局部变量
   printf("a=%d",a);
   return 0;
}

总结:原则上变量名尽量不要冲突,当全局变量和局部变量的名字冲突的情况下,局部优先。

4.4变量的使用

写一个代码算两个数的值

#include <stdio.h>
int main()
{
  int num1 = 0;
 int num2 = 0;
  int sum = 0;
  printf("输入两个操作数:>");
  scanf("%d %d", &num1, &num2);
  sum = num1 + num2;
  printf("sum = %d\n", sum);
  return 0;
}

注;scanf是一个输入函数。

4.5变量的作用域和生命周期

作用域

作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用

的而限定这个名字的可用性的代码范围就是这个名字的作用域。

  1. 局部变量的作用域是变量所在的局部范围。
  2. 全局变量的作用域是整个工程。
    生命周期
    变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
  3. 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
  4. 全局变量的生命周期是:整个程序的生命周期。

4.6常量

常量顾名思义,就是一个不变的量,在生活中我们会发现有很多值是不会发生改变的,这种量在c语言中我们就称为“常量”。

常量在c语言中的定义和变量还是有差距的。

常量分为以下几种

1.字面常量

2.coust修饰的常变量

3.#define定义的标识符常量

4.枚举常量

以下是常量的使用

#include <stdio.h>
//举例
enum Sex
{
MALE,
FEMALE,
SECRET
};
//括号中的MALE,FEMALE,SECRET是枚举常量
int main()
{
  //字面常量演示
  3.14;//字面常量
  1000;//字面常量
  //const 修饰的常变量
  const float pai = 3.14f;  //这里的pai是const修饰的常变量
  pai = 5.14;//是不能直接修改的!
  //#define的标识符常量 演示
#define MAX 100
  printf("max = %d\n", MAX);
  //枚举常量演示
  printf("%d\n", MALE);
   printf("%d\n", FEMALE);
  printf("%d\n", SECRET);
  //注:枚举常量的默认是从0开始,依次向下递增1的
  return 0;
}

五,字符串

“Hello word”

像这种由双引号引起来的一系列字符,在c语言中叫做字符串。

1.字符串所占内存空间

在c语言中,字符串的结束标志是一个‘\0’,的转义字符。在计算字符串长度的时候’\0’,不算字符串的长度。

那我们直接上代码展示吧;

我们再来看一个代码就能说明’\0’,的重要性。

在这个代码中,ch1没有定义’\0’,程序就会一直往后读,直到找到’\0’,所以会产生一个随机值。

注:strlen是用来求字符串长度的。

2.字符串的初始化

为了保存字符,我们将每一个字符都一 一赋值不是一件简单的事情。

我介绍两种初始化方式

char str1 []={'a','b','c','\0'}
char str2 []="abc"

通过这种方式初始化会更加简洁也更加常用。

六,转义字符

转义字符 – 转变它原来的意思

\? 在书写连续多个问号是使用,防止他们被解析成三字母词
\’ 用于表示字符常量
\" 用于表示一个字符串内部的双引号
\\ 用于表示一个反斜杠,防止它被解释为一个转义序列符
\a 警告字符,蜂鸣
\b 退格符
\f 进纸符
\n 换行
\r 回车
\t 水平制表符
\v 垂直制表符
\ddd ddd表示1~3个八进制的数字。如:\130表示字符X
\xdd dd表示2个十六进制数字。如:\30表示字符0

在这里简单介绍一下转义字符的用法

如果说我们想在屏幕上输出”c:\tset\test.c“这样一串字符

正常来说我们可以这样写

为什么会出错呢?

这里就涉及到了转义字符,’\t‘会被解释成水平制表符,我们可以加一个’\‘,防止被解释为一个转义序列符。

七,注释

  1. 代码中有不需要的代码可以直接删除,也可以注释掉
  2. 代码中有些代码比较难懂,可以加一下注释文字
  3. 注释有两种风格:
    C语言风格的注释 /xxxxxx/
    缺陷:不能嵌套注释
    C++风格的注释 //xxxxxxxx
    可以注释一行也可以注释多行。

八,操作符

在这样只是简单认识一下操作符,分别有哪些类型的操作符,后期的文章会做详细说明。

算数操作符

+ - * / %

移位操作符

>> <<

位操作符

& ^ |

赋值操作符

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

单目操作符

!      逻辑反操作
-      负值
+      正值
&      取地址
sizeof    操作数的类型长度(以字节为单位)
~      对一个数的二进制按位取反
--      前置、后置--
++      前置、后置++
*      间接访问操作符(解引用操作符)
(类型)    强制类型转换

关系操作符

>
>=
<
<=
!=  用于测试“不相等”
==    用于测试“相等”

逻辑操作符

&&   逻辑与
||      逻辑或

条件操作符

exp1 ? exp2 : exp3

逗号表达式

exp1, exp2, exp3, …expN

下标引用、函数调用和结构成员

[] () . ->

九,关键字

c语言中提供了非常丰富的关键字,这些关键字都是语言本身预先设定好的,用户自己是不能创造关键字的。

可以大致可分为数据类型关键字、控制语句关键字、存储类型关键字和其它关键字四类。

1、数据类型关键字(12个):

(1) char :声明字符型变量或函数

(2) double :声明双精度变量或函数

(3) enum :声明枚举类型

(4) float:声明浮点型变量或函数

(5) int: 声明整型变量或函数

(6) long :声明长整型变量或函数

(7) short :声明短整型变量或函数

(8) signed:声明有符号类型变量或函数

(9) struct:声明结构体变量或函数

(10) union:声明共用体(联合)数据类型

(11) unsigned:声明无符号类型变量或函数

(12) void :声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用)

2、控制语句关键字(12个):

A. 循环语句

(1) for:一种循环语句

(2) do :循环语句的循环体

(3) while :循环语句的循环条件

(4) break:跳出当前循环

(5) continue:结束当前循环,开始下一轮循环

B. 条件语句

(1) if: 条件语句

(2) else :条件语句否定分支(与 if 连用)

(3) goto:无条件跳转语句

C. 开关语句

(1) switch :用于开关语句

(2) case:开关语句分支

(3)default:开关语句中的“其他”分支

D. 返回语句

return :子程序返回语句(可以带参数,也看不带参数)

3、存储类型关键字(4个)

(1)auto :声明自动变量 一般不使用

(2)extern:声明变量是在其他文件正声明(也可以看做是引用变量)

(3)register:声明寄存器变量

(4)static :声明静态变量

4、其它关键字(4个):

(1)const :声明只读变量

(2)sizeof:计算数据类型长度

(3)typedef:用以给数据类型取别名(当然还有其他作用

(4)volatile:说明变量在程序执行中可被隐含地改变c

目录
相关文章
|
6月前
|
C语言
C语言初阶⑧(结构体)知识点和笔试题
C语言初阶⑧(结构体)知识点和笔试题
59 0
|
5月前
|
C语言
C语言初阶:如何判断是否为素数并且输出
C语言初阶:如何判断是否为素数并且输出
43 0
|
6月前
|
C语言 数据安全/隐私保护
C语言初阶②(分支语句和循环语句)编程练习
C语言初阶②(分支语句和循环语句)编程练习
56 1
|
6月前
|
存储 编译器 C语言
C语言初阶⑦(指针初阶)知识点+笔试题(上)
C语言初阶⑦(指针初阶)知识点+笔试题
39 0
|
6月前
|
算法 程序员 编译器
C语言初阶③(函数)知识点+编程作业(递归模拟strlen,pow)
C语言初阶③(函数)知识点+编程作业(递归模拟strlen,pow)
44 0
|
4月前
|
编译器 C语言
【C语言初阶】指针篇—下
【C语言初阶】指针篇—下
|
4月前
|
存储 C语言
【C语言初阶】指针篇—上
【C语言初阶】指针篇—上
|
5月前
|
C语言
【初始C语言8】详细讲解初阶结构体的知识
【初始C语言8】详细讲解初阶结构体的知识
|
6月前
|
程序员 编译器 测试技术
C语言初阶⑨(调试)(如何写出好的代码)(模拟实现strcpy和strlen)
C语言初阶⑨(调试)(如何写出好的代码)(模拟实现strcpy和strlen)
45 1
|
6月前
|
存储 Linux C语言
C语言初阶⑥(操作符详解)编程作业(算数转换)(下)
C语言初阶⑥(操作符详解)编程作业(算数转换)
36 1