【C语言】第一章-初识C语言-1

写在前面

  本专题博客主要内容为本人在C语言学习过程中遇到的主要问题和C语言相关知识点的讲解,是系统性的技术学习博客,使用的环境为VS2017。本教程本着先浅后深的学习理念由浅至深进行学习,并且每一章都会附有代码及案例讲解。在学习过程中如果读者有相关问题请移步我的私人博客,或发送问题到我的邮箱或者QQ一起探讨!

第一章 初识C语言

第1节

为什么学习C语言

  C语言是一门通用计算机编程语言,广泛用于底层开发。C语言虽然并不是最完美的语言,但是可以说目前很多的高级编程语言的前身都是C语言,所以C语言绝对是开发学习中的第一门语言,他可以帮助你很好的理解计算机原理,理解计算机内存管理。而且同时C语言有着简介的语法,十分简单易上手,但是想要精通使用C语言还需要长期的学习和锻炼才能掌握。目前2011年12月8日,国际标准化组织(ISO)国际电工委员会(IEC) 发布的 ***C11标准***是C语言的第三个官方标准,也是C语言最新标准,在以前C语言版本基础上加上了很多新的语法,而本系列博客也会以C11标准进行C语言讲解。

第一个C语言项目

  1、接下来我会在VS2017的环境中展示第一个C语言项目。首先是进行项目创建。
  1、点击新建->项目
  2、在左侧边框栏选择VisualC++选择右侧边框栏的空项目
  3、右键点击源文件选择添加->点击新建项->添加
  这样既可创建好一个CPP源文件
  虽说我们写的是C语言但是创建CPP源文件照样是可以写C语言代码的,互不影响,如果你想创建一个C语言源文件在第三部点添加之前把文件名称后缀改为 .c文件既可!!
  2、在创建好源文件后我们就可以正式开始快乐的敲代码啦!

#include //添加头文件
int main()//主函数,函数入口
{
	printf("This is my world!!\n");//输出“This is my world!!”
	return 0;//主函数返回值,可以忽略这一条语句
}

  上面这一段代码的主要作用就是实现在屏幕上打印一句话的功能。接下来我给大家注意讲解每一行代码的含义。
  第一行代码是引用了一个标准输入输出流的头文件,这个可以说是写C语言代码必备的。可能有小伙伴会有疑问,这句话有什么用?其实写代码的过程中并不是所有代码都由我们自己写的,在编译器中会实现留有很多的代码都是由大佬们实现写好留下来的,而这些代码都会被封装为一个又一个的头文件,提供给开发者使用,这样会给开发者带来不小的便利,比如说我们下面printf()这个函数就是这个头文件所提供给我们的。
  第二行代码包括下面的一对大括号都被成为主函数。主函数是一个程序的入口函数,程序的启动和运行都会先从主函数开始,所以在一个程序中主函数是必不可少的。
  主函数里面的函数printf() 这个函数的主要功能是将括号里面的内容输出到屏幕上,在这个函数中大家可以看到目前有一个参数,是一个由双引号括起来的字符串(字符串的概念之后会学习),字符串里面的内容大家可以随意改动,输出自己想要的内容。
  还可以注意到还有一个语句return 0这句话是函数的返回值。主函数是可以有返回值的,但是这句话不写编译器也不会报错,之后学了函数的知识后大家会对返回值有更深的理解。
  在写完了以上这几行代码后就可以编译运行了,大家可以使用快捷键ctrl+f5进行编译和运行,或者点击调试里面的开始执行(不调试) 进行执行。
  在运行后大家可能会发现程序运行一闪而过,根本无法看到结果,这是因为程序运行太快了并且没有暂停所以程序结束了,所以之后我们将代码改成这个样子让他暂停下。

#include //添加头文件
#include 
int main()//主函数,函数入口
{
	printf("This is my world!!\n");//输出“This is my world!!”
	system("pause");//暂停语句
	return 0;//主函数返回值,可以忽略这一条语句
}

  可以注意到我们在第6行加了个system语句,这个语句的作用就是让程序暂停运行。改完之后大家可以重新编译运行下,就可以看到运行的结果了。

数据类型

  1、为什么会有不同的数据类型?
  这个问题其实很简单,因为众所周知程序在运行时会将数据暂时存储在内存中以方便程序使用,但是在系统给程序分配内存空间是就会产生问题,为了解决这个问题我该分配多少内存给它呢?多了的话浪费资源,少了的话不够用,而且不同的数据不可能使用同一种方式存储(例如字符和整形以及浮点型的存储方式都有很大的区别),于是在编程语言设计之初,不同的数据类型就产生了。
  2、在C语言中常用的数据类型一共有7种,接下来统一给大家介绍,这在大家之后的编程中是必不可少的。

    	char //字符型:1字节
	short //短整型:2字节
	int //整型:4字节
	long //长整型:4字节
	long long //更长整型:8字节
	float //单精度浮点型:4字节
	double //双精度浮点型:8字节

  每个不同的数据类型都有不同的所占空间大小,而数据在内存中都是以二进制形式进行存储的。举个例子,int型占4个字节,一个字节是8个bit,就是4 * 8 = 32 个二进制位,所能存储的数据大小(默认无符号)就是从0 ~ 2 ^ 32 - 1大概就是42亿,依次类推。要说明的是整形是存储整数的无法处理小数,而浮点型是专门处理小数的(自然也能处理整数),而字符型则是处理字符的。数据在内存中存储方式也随着数据类型的不同而不尽相同,其中整形的存储是根据补码进行存储,而字符型则是根据ASCII码进行换算然后进行存储。
  所谓ASCII码不过是将键盘上的每一个字符都根据序号进行排序,每一个字符都有着自己编号,而进行内存存储时与ASCII表进行比对,找到自己的编号,然后将字符型转换为整形数字然后再进行存储。

变量、常量

  1、所谓变量就是可以改变的量,而常量则是无法被改变的值。
  2、定义变量的方式也十分简单。

    	int age = 10;
	float weight = 45.5f;
	char ch = 'w';

  大家可以看出来定义变量不过是数据类型(空格)变量名称即可定义。**而定义一个变量后最立刻对它进行初始化赋值,否则变量会存储一个随机的值,**这十分不便于变量管理。在定义浮点型变量时如果初始化内容后不加f则默认为双精度浮点型。
  3、变量的分类大致可以分为:局部变量和全局变量,每个变量都有着自己的作用域和生命周期。局部变量的作用域和生命周期都是大括号,全局变量的作用域和生命周期则是当前整个程序
  具体可以参考以下代码段:

#include //添加头文件
#include 
int global = 2019;//全局变量
int main()//主函数,函数入口
{
	int local = 2018;//局部变量
	//下面定义的global不会有问题
	int global = 2010;
	printf("global = %d\n", global);
	system("pause");
}

  值得一提的是全局变量在已经定义的前提下,定义相同变量名的局部变量不会报错,那么在局部变量的作用域内打印局部变量会出现什么结果呢?执行过大家肯定会看到,global = 2010。这是因为在局部变量作用域内局部变量会覆盖同名称的全局变量。
  4、常量则是不能被改变的量,在C语言中常量分为字面常量、const修饰的常变量、#dfine定义的标识符常量、枚举常量。

#include //添加头文件
#include 
#define PIE 3.14
enum Sex//枚举常量
{
	MALE,
	FEMALE,
	SECRET,
};
int main()//主函数,函数入口
{
	3.14;//字面常量
	1000;//字面常量
	const float pai = 3.14f;//const修饰的常量
	system("pause");
}

  关于常量如代码演示,其中较为特殊的是enum常量,枚举常量默认元素从0开始赋值,是快速定义连续常量的一种方式。#define所用到的宏定义只是单纯的文本替换,具体使用之后会详细讲解。

你可能感兴趣的:(C语言初阶,系统性学习)