C语言快速入门--初识C语言(上)


【前言】初始C语言只是介绍C语言的基本知识,每个知识点不做详细介绍,博主会在后面的文章从C语言的快速入门到C语言的重点突破一层层的来向读者们介绍。博主将会再接下来的日子里持续更新C语言的知识。

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

一、什么是C语言

C语言是一门高级语言,计算语言是由低级向高级发展的。
在这里插入图片描述
常见的高级语言还有 C++ python java
C语言是一门通用的计算机语言,广泛应用于底层开发
C语言的国际标准ANSI C
在这里插入图片描述
C 语言是一门面向过程的计算机编程语言,与 C++ , Java 等面向对象的编程语言有所不同。
编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
博主暂时会使用vs2019来向大家介绍C语言。

vs2019—集成开发环境
·
编辑器+编译器+调试器

二、第一个C语言程序

#include<stdio.h>	
//库函数的使用,得包含特定的头文件
//std   i     o
//标准  输入  输出
//写c语言代码,首先要写出主函数 头文件
//主流写法
//int--整型
int main()
{
	printf("Hello World!\n");
	//printf是c语言提供的库函数
	//专门按照某种指定格式来打印
	return 0;
	//int返回一个值,返回0
}
//老式、很少使用这种主函数写法
//void main()
//{
//}

运行
在这里插入图片描述
注意:main函数是程序的入口
一个工程中main函数有且仅有一个

三、数据类型

内置数据类型

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

各个数据类型的大小

//sizeof是用来计算一个类型的大小的
//单位是 **字节**
#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;
}

在这里插入图片描述
c语言规定:sizeof(long)>= sizeof(int)

计算机中的单位:
bit----比特位
byte----字节、1byte=8bit
KB、1KB=1024BYTE
MB、1MB=1024KB
GB、TB、PB·····
一个比特位存放 0/1 (因为计算机是能够识别二进制的)
一个字节有八个比特位

C语言有没有字符串类型?

C语言中没有字符串类型,描述字符串的时候一般采用字符串数组的形式。暂不做具体介绍。

自定义类型

c语言可以自己创造类型,如使用struct(结构体)enum(枚举)union(联合) 等关键字来自定义类型。暂不做具体介绍。

四、变量、常量

定义变量的方法

int age=10;
double pi=3.14;
char ch='h';

变量的分类与使用

1、变量的分类

int a=100;//全局变量
int main()
{
	int b=10;//局部变量
	return 0;
}

· 局部变量

int b=10;//局部变量,定义在大括号的内部。

· 全局变量

int a=100;//全局变量,定义在大括号的外部。

· 局部变量优先

#include<stdio.h>
int a=100;//全局变量
int main()
{
	int a=10;//局部变量
	printf("%d\n",a);//局部变量与全局变量命名起冲突时,局部优先。
	return 0;
}

在这里插入图片描述
2、 变量的使用

eg. 写一个代码,完成两个数的相加

#include<stdio.h>
int main()
{
int num1=0;
int num2=0;
int sum=0;//存放加法的结果
//输入
scanf("%d%d",&num1,&num2);
//相加
sum=num1+num2;
//输出
printf("%d\n",sum);
return 0;
}

变量的作用域与生命周期

1、 作用域

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

  1. 局部变量的作用域是变量所在的局部范围。
#include<stdio.h>
int main()
{
	{
		int a = 10;
		printf("%d\n",a);
	}
	printf("%d\n",a);
	return 0}

我们发现,只有第一个printf(大括号内),会输出打印10;
但是有第二个printf(大括号外)时,编译器会报错。
在这里插入图片描述
2. 全局变量的作用域是整个工程。

#include<stdio.h>
int b = 10;
int main()
{
	printf("%d\n", b);
	return 0;
}

运行后,输出10;
2、生命周期

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

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

    如上文代码,局部变量a的生命周期即它记入大括号到出大括号的过程。
  2. 全局变量的生命周期是:整个程序的生命周期。
    如上文全局变量b

常量

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

1、字面常量

		20;//字面常量
		3.14;//字面常量
		'a';//字符常量
		"abcdef";//字符串常量

2、const修饰的常变量

const int num = 10;

const 是一个C语言的关键字。const 是常属性的意思。
const可以保护一个变量不被修改,const修饰的常变量本质还是一个变量,不具备常量的某些性质。
如:

	const int n = 10;
	//n=20;----err
	int arr[n] = { 0 };//不能使用该方式来定义一个数组

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

#include<stdio.h>
#define M 100
int main()
{
	int a = M;
	int arr[M] = { 0 };
	printf("%d\n", a);//100
	return 0;
}

4、枚举常量

#include<stdio.h>
enum Color
{
//枚举常量
	RED,//0
	GREEN,//1
	BLUE//2
};
int main()
{
printf("%d %d %d",RED, GREEN, BLUE);//0   1   2
return 0;
}

五、字符串+转义字符+注释

字符串

"Hello World\n"

定义: 这种由双引号引起来的一串字符称为字符串字面值(String Literal),或者简称字符串
注: 字符串的结束标志是一个 \0转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串内容。
我们运行一下下面这段代码,来探讨一下字符串结束标志’\0’

#include<stdio.h>
#include <string.h>
int main()
{
	char arr1[] = "abc";
	char arr2[] = { 'a', 'b', 'c'};
	printf("%d\n", strlen(arr1));
	printf("%d\n", strlen(arr2));
	//strlen是计算一个字符串长度的库函数//string.h
	return 0;
}

在这里插入图片描述
我们发现输出的arr2的长度远大于arr1,arr2长度输出的一个随机值。这是为什么呢?
我们再把上代码中的printf换成下面的代码,打印这两个字符串试试。

	printf("%s\n", arr1);
	printf("%s\n", arr2);

在这里插入图片描述
打印arr2时出现了乱码。arr1为正确情况。
原来,是我们定义arr2结束时没有加入 \0,当打印的字符c时,系统会接着打印随机值直到找到 \0字符串结束。

	char arr2[] = { 'a', 'b', 'c','\0'};

把arr2的定义改成这段代码就会输出正确结果了。

转义字符

我们在前面的学习中,发现有 \n \0 这些字符。
我们把这类带斜杠的字符称为转义字符。
转义字符,顾名思义,就是转变原来的意思。

printf("asdas\tsad\n");// 这里\t \n都是转义字符
// /t水平制表符 /n换行符

\’ 用于表示字符常量’
\“ 用于表示一个字符串内部的双引号
\\ 用于表示一个反斜杠,防止它被解释为一个转义序列符。
\a 警告字符,蜂鸣
\b 退格符
\f 进纸符,表单,换页
\n 换行
\r 回车
\t 水平制表符
\v 垂直制表符
\ddd ddd表示1~3个八进制的数字。 如: \130 X
\xdd dd表示2个十六进制数字。 如: \x30

·一道关于转义字符的面试题

eg.求字符串"c:\test\x3\012.c"的长度

	printf("%d\n", strlen("c:\test\x3\012.c"));

在这里插入图片描述
输出结果是10,而不是字符的个数16。是因为其中 \t \x3 \012转义成了相应的字符

注释

注释的作用:

  1. 注释是用来解释代码
  2. 注释可以注释一些不需要的代码

注释的方法:
1.c语言注释风格

/*	
int a = 10;
  a=5;
*/

缺陷:不支持嵌套/* 会与最先遇到的 */ 结合成一段注释语句。
2.c++注释风格

//int a=10;
// a=5;

可以注释一行也可注释多行。

结语

初识C语言(上) 就给大家介绍的这里,感谢各位读者的阅读,接下来的内容博主会陆续给大家介绍的,如果觉得笔者写得还可以的话,麻烦各位友友们一键三连哦!如果笔者这篇文章有什么错误和不足的地方,也恳请大家不吝赐教!谢谢大家了!!在这里插入图片描述

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值