C语言程序设计之基础篇-1初识C语言

本文介绍了C语言的基础知识,包括C语言的概念、第一个C语言程序示例、数据类型(如char,int,float等)、变量和常量的定义、输入输出语句、作用域和生命周期、函数、数组、操作符以及关键字等内容。
摘要由CSDN通过智能技术生成

列表

  • 什么是C语言
  • 第一个C语言程序
  • 数据类型
  • 变量、常量
  • 字符串+转义字符+注释
  • 选择语句
  • 循环语句
  • 函数
  • 数组
  • 操作符
  • 常见关键字
  • define 定义常量和宏
  • 指针
  • 结构体

1.什么是C语言?

C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。 2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。

2.第一个C语言程序

#include <stdio.h>  //该语句后面笔记会介绍

int main()
{
printf("hello word\n");
printf("hello hei\n");
return 0;
}
//解释
//main函数又可以叫做主函数,一个程序/工程中有且只有一个,程序运行中该函数被操作系统调用。
//return  是函数的结束语句,用来返回一个值给函数的调用者,比如上面main函数中的return 0返回一个数值0给操作系统,表示的意思是程序正常运行结束。

3.数据类型

char			//字符数据类型     
short			//短整型
int				//整形
long			//长整型
long long		//更长的整形
float			//单精度浮点型
double			//双精度浮点型
//c语言没有字符串类型,因为在c语言中字符串可以用多个字符数据类型的数据来表示。

来看看每种类型的大小(字节)是多少

#include <stdio.h>

int main(){
	printf("%d\n", sizeof(char));
    printf("%d\n", sizeof(short));
    printf("%d\n", sizeof(int));
    printf("%d\n", sizeof(long));
    printf("%d\n", sizeof(long long));
    printf("%d\n", sizeof(float));
    printf("%d\n", sizeof(double));
    printf("%d\n", sizeof(long double));
	return 0;
} 
//sizeof函数是c语言关键字,它是一个运算符,其作用是用来取一个数据类型或者数据对象的大小(占的字节数)的。\符号是转义符号,配合n即\n表示换行

运行结果
在这里插入图片描述

为什么出现这么多类型?

  • 存在这么多的类型,其实是为了更加丰富的表达生活中的各种值类型。

3.1变量、常量

生活中的有些值是不变的(比如:圆周率,性别,身份证号码,血型等等)而有些值是可变的(比如:年龄,体重,薪资)。因此在c语言中用常量这个概念来表示不变的值,用变量表示可变的值

3.2如何定义变量

语法:类型+变量名;
例如:

//声明变量
char c;
int age;
float weight;
...
//声明并初始化变量(定义一个变量)
char c='a';
int age = 18;
float weight = 45.5f;
...

备注:变量名自定义的但要求符合C语言标识符命名规范即可

3.3变量分类

  • 全局变量
  • 局部变量

解释:
定义在函数里(包含复合句和局部变量)的被称为局部变量,而被定义在函数外的叫做全局变量。
作用域范围:
局部变量的作用范围是从定义的位置到该函数结束行,在该范围内都可以引用该变量,其他地方不能引用。全局变量是从定义的位置到该文件结束/工程结束。变量重名时使用的优先原则:就近原则,如下

#include <stdio.h>
int age = 20;//全局变量
int main(){
	int age = 18 ;//局部变量
	printf("age=%d",age);//优先引用最近的age
	return 0;
}
//程序打印的结果是:age=18

3.4输入输出语句介绍

printf函数:
该函数是c语言标准库里的函数,其作用是将指定的数据格式化为字符串并输出到标准输出设备(比如控制台窗口、文件),可视化的方式展示给开发人员。其语法如下

printf("格式控制字符串",参数列表);

scanf函数:
该函数同printf类似也是c语言标准库里的函数,其作用与printf相反,它将外部输入(一般为键盘输入)的数据以指定的格式赋值给变量。语法如下

scanf("格式控制字符串",&变量1,&变量2...)
//&符号是取地址的运算符号,意思是取某个变量的地址
int a =10;
int *p =&a;//取变量a的地址赋值给指针变量p

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

作用域

作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用
的
而限定这个名字的可用性的代码范围就是这个名字的作用域
  • 局部变量的作用域是变量所在的局部范围。
  • 全局变量的作用域是整个工程

生命周期

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

3.6常量

C语言中的常量和变量的定义的形式有所差异。
C语言中的常量分为以下以下几种:

  • 字面常量
  • const 修饰的常变量
  • #define 定义的标识符常量
  • 枚举常量
#include <stdio.h>
//举例
enum Sex{
	 MALE,
	 FEMALE,
	 SECRET
}
int main(){
	//字面常量演示
	3.14;//字面常量
	200;//字面常量
	//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);
  
    return 0;
}
//括号中的MALE,FEMALE,SECRET是枚举常量

(注:上面例子上的 pai 被称为 const 修饰的常变量, const 修饰的常变量在C语言中只是在语法层面限制了变量 pai 不能直接被改变,但是 pai 本质上还是一个变量的,所以叫常变量)

4字符串+转义字符+注释

4.1字符串

"hello word!"

这种由双引号(Double Quote)引起来的一串字符称为字符串字面值(String Literal),或者简称字符串。
注:字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串内容。

#include <stdio.h>
//下面代码,打印结果是什么?为什么?(突出'\0'的重要性)
int main()
{
    char arr1[] = "bit";
    char arr2[] = {'b', 'i', 't'};
    char arr3[] = {'b', 'i', 't', '\0'};
    printf("%s\n", arr1);
    printf("%s\n", arr2);
    printf("%s\n", arr3);
    return 0;
}

4.2转义字符

假如在屏幕上打印一个目录: c:\code\test.c
该如何写代码

#include <stdio.h>
int main()
{
 printf("c:\code\test.c\n");
    return 0;
}

实际上运行的结果:
在这里插入图片描述
这里就不得不提一下转义字符了。转义字符顾名思义就是转变意思。
下面看一些转义字符。

转义字符释义
\?在书写连续多个问号时使用,防止被解析成三字母词
\’用于表示常量’
\"用于表示一个字符串内部的双引号
\\用于表示一个反斜杠,防止它被解释为一个转义序列符
\a警告字符,蜂鸣
\b退格符
\f进纸符号,其实就是换页符号,把光标置于下一页的开头
\v垂直制表符号,从’v’字符的下一行输出,并且开始的列数为字符’v’前一个字符所在列的后面一列
\n换行
\r回车
\t水平制表符
\dddddd表示1~3个八进制数字。如:\130 X
\xdddd表示2个十六进制数字,如:\x30 0

5.注释

在C语言中注释有两种,行注释和块注释。单行注释使用//即可,块注释使用/******/即可

6.选择、循环语句

  • 条件选择语句-----使用if和else
  • 循环语句-----使用while、for语句

7.函数

函数是一段可以重复使用的代码,用来独立地完成某个功能,它可以接收用户传递的数据,也可以不接收。接收用户数据的函数在定义时要指明参数,不接收用户数据的不需要指明,根据这一点可以将函数分为有参函数和无参函数,将代码段封装成函数的过程叫做函数定义

8.数组

现在要存储1~10这几个数字,怎么存储呢?在c语言中给出了数组来进行存储,什么是数组?数组是指类型相同的数据元素的集合。

8.1数组语法格式

  • 类型 数组名[数组长度]

8.2定义数组有哪些方式

1、静态初始化,在声明数组时同时初始化数组

int arr[5]={1,2,3,4,5};//声明一个包含5个元素的数组,并初始化为{1,2,3,4,5},如果这里数组元素全部初始化了,中括号里的数字可以省略的

2、动态初始化,在声明数组后,逐个赋值

int arr[5];
arr[0]=1;
arr[1]=2;
...

3、部分初始化

//没有进行初始化的默认为数组元素类型的默认值
int a[5]={1,2,3};//其他元素默认值为0

9.操作符

算术运算符

+	-	*	/	%

移位运算符

>>	<<

位操作符

&	^	|

常用赋值操作符(结合方向自右向左)

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

单目运算符号(结合方向自右向左)

!	逻辑非运算符
~	按位取反运算符
++	自增运算符
--	自减运算符
-	负号运算符
(类型)	类型转换运算符
*	指针运算符
&	取地址运算符
sizeof	长度运算符

条件运算符(三目运算符)自右向左结合

  ?  :
  
案例:  逻辑表达式1 ? 表达式2:表达式3

逻辑运算符

&&	逻辑与运算符	两个表达式都为真时,逻辑运算的结果为真,否则为假
用法:逻辑表达式1&&逻辑表达式2
备注:当表达式1结果为真时,表达式2才被执行

||	逻辑或运算符 	两个表达式仅满足其一为真时,逻辑运算的结果为真
用法:逻辑表达式1||逻辑表达式2
备注:仅当逻辑表达式1为假时表达式2才被执行

!	逻辑非(略)

各类运算符的优先级(自上而下,从高到底):

1.初等运算符	()	[]	->	.
2.单目运算符
3.算术运算符
4.关系运算符
5.逻辑运算符(不包括 !)
6.条件运算符
7.赋值运算符
8.逗号运算符

备注:位运算符的优先级比较散(有的在算术运算符之前(如:~),有的在关系运算符之前(如:>> <<),有的在关系运算符之后(如:&、∧)

10常用关键字

auto		break		case		char		const
continue	default		do			double		else
enum		extern		float		for			goto	
if			inline		int			long		register
restrict	return		short		signed		sizeof
static		struct		switch		typedef		union	
unsigned	void		volatile	while		_bool
_Complex	_Imaginary

11 define 定义常量和宏

单独学习…

12.指针

单独学习…

13.结构体

单独学习…

  • 19
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值