初识C语言1

  • 一. 初识C语言
    • 1.什么是C语言?
    • 2. 写一个简单的C语言程序
    • 3.main函数
    • 4.数据类型
    • 5.不同数据类型所占内存的大小
      • 5.1不同数据之间的大小转换关系
      • 5.2不同数据类型创建变量
    • 6.常量和变量
      • 6.1 变量的定义方法
      • 6.2变量的命名
      • 6.3 变量的分类
      • 6.4变量的使用
      • 6.5变量的作用域和生命周期
        • 1. 作用域
        • 2. 生命周期

一. 初识C语言

语言是交流的工具 而人和计算机交流依靠的就是计算机语言:比如说C、C++、java、python、go… 这篇博客就带大家简单认识一下C语言的基础知识,让大家对C语言有一个大概了解

1.什么是C语言?

我们知道,计算机最底层是各种硬件,硬件之上是操作系统,想让硬件工作就需要操作系统,而操作系统就是通过调用驱动层和硬件交互。在操作系统之上我们可以安装很多应用软件(也叫上层软件),在操作系统之下一般叫做底层软件,c语言擅长的就是底层软件的开发,但这并不代表它不能进行上层开发。c语言在嵌入式单片机开发中用的很多,进来两三年物联网的兴起又让c语言迎来了一次春天。
以下是对C语言的一些简单介绍

C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
C语言的标准:二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。C语言的标准有C89,C90,C99,C11…
最早期的代码都是以二进制形式来写的,对于程序员非常不友好。后来发展为了汇编语言,将二进制序列起一个名字,比如ADD,MOVE,JMP等,这就是助记符,由助记符组成的语言就是汇编语言。汇编语言之后又出现了B语言,在其之上又建立了C语言。 此时就出现了一些问题。大家都想用C语言,每个使用者对C语言进行了一些修改,互相之间不通用,不利于长期发展。于是C语言的国际标准就出现了,也就是ANSI C 又叫做C89 随着时间的发展标准也在不断迭代。当然,当前通用的还是C99之前的语法标准。
[1] 目前2011年12月8日,国际标准化组织(ISO)国际电工委员会(IEC) 发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。
其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。如VS2019用的是MSVC编译器,linux使用gcc编译器 而苹果用的是clang…

2. 写一个简单的C语言程序

这里我使用的是VS2019集成开发环境 集成开发环境又叫IDE
一个集成开发环境包含编辑器 编译器(如MSVC)调试器
而要达到输出hello world的效果
首先要创建一个项目 项目的命名尽量不使用中文不要使用特殊字符不要使用空格(可以用下划线_)
新建好项目后 我们要在源文件中新建项 选c++文件 然后将cpp文件改为.c文件 添加即可
.c为后缀的是C语言的代码
.cpp为后缀的是c++的代码

#include <stdio.h>
int main()//主函数
{//printf是一个库函数 由C语言标准库提供 可以直接使用 使用前需要包含<stdio.h>头文件//功能:在屏幕上打印信息//stdio就是标准输入输出 standard input/outputprintf("hello world\n");在屏幕上打印 hello worldreturn 0;
}
  • printf() 是一个打印函数 使用时需要包含头文件 <stdio.h>
  • 运行代码时 需要对代码先编译 再链接 再运行 ctrl+F5一键完成这三个功能(或是fn+ctrl+f5) 或者点击开始执行(不调试)
    -如果你是VS2013 那么显示代码的窗口可能一闪而过 可以在解决方案资源管理器中右击项目名 点击属性->连接器->系统->子系统 改成控制台即可
  • 按F10 进入调试 按一次f10执行一条语句 我们会发现 c语言的代码 都是从main函数的第一行开始执行的 所以说main函数是程序的入口 所以我们的代码一定要有一个main函数
  • 但是 一个工程中main函数有且仅有一个 但是可以有多个.c文件

3.main函数

int main ()
{
return 0;
}
这就是main函数的一个标准模板

  • int 是该函数的返回类型 表示该函数的执行结果返回一个整形
  • main是函数名
  • ()括号里面传递函数执行所需要的参数 当然这里不需要对它传参所以不写
  • {} 也就是花括号 里面是函数体
    通过这样一个简单的过程 我们就可以在屏幕上看到hello world字符了

当然除了上面的标准定义外 main函数也可以写成

int main(int argc,char*argv[])
{return 0;
}//定义1int main(void)
{return 0;
}//定义2

4.数据类型

在学习数据类型之前 我们先思考一下 我们为什么要写代码呢?
我想应该是为了解决生活中的问题
比如我们利用C语言实现一个网上商城
我们需要描述商品的名字 价格 品种 编号
我们需要有能力去描述商城中的商品
这就需要不同的数据类型

char        //字符数据类型
short       //短整型
int         //整形
long        //长整型
long long   //更长的整形
float       //单精度浮点数
//123.4可以写成12.34*10^1^ 1.234*10^2^
double      //双精度浮点数
//有了如此多的类型,我们就可以更加丰富的表达生活中的各种值。

5.不同数据类型所占内存的大小

那么这些变量在内存中占据的空间是多大呢?
我们可以用sizeof() 来求他们所占空间的大小
sizeof是一个操作符 而不是函数哦

#include <stdio.h>
int main()
{//%d表示打印10进制的整型 这是指定的打印格式 后面就是待打印的数据//'\n'表示打印结束后换行//sizeof()就是用来求变量的大小 printf("%d\n", sizeof(char));//1字节printf("%d\n", sizeof(short));//2字节printf("%d\n", sizeof(int));//4字节printf("%d\n", sizeof(long));//4字节printf("%d\n", sizeof(long long));//8字节printf("%d\n", sizeof(float));//4字节printf("%d\n", sizeof(double));//8字节printf("%d\n", sizeof(long double));//8字节return 0;
}

以上计算机输出的数字的单位都是字节 也就是byte
计算机中最小的存储单位是bit 比特位
计算机能够识别的是二进制 只有0和1 存储0和1所需要的空间就是一个比特位
(这个世界上只有10种人…)
bit之上是字节 Byte

5.1不同数据之间的大小转换关系

  • 1 byte=8bit
  • 1KB = 1024byte
  • 1MB = 1024KB
  • 1GB = 1024MB
  • 1TB = 1024GB
  • 1PB= 1024TB

为什么long和int长度一样呢?
C语言标准规定:sizeof(long)>=sizeof(int)
所以long的长度和int长度可以是相等的

5.2不同数据类型创建变量

char ch = 'w';//单个字符用单引号引起来
int weight = 120;//存放体重
float salary = 20000.2;

假设有一个32G内存的电脑 当你创建一个变量时 会向内存申请一块空间 然后放入我们要存的数据
注意:一个汉字占两个字符 不能用单引号引汉字 汉字当成字符串处理

6.常量和变量

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

6.1 变量的定义方法

类型 变量名 = xxx;

int age = 150;
float weight = 45.5f;//要加上f 如果不加f 编译器会默认他是double类型
char ch = 'w';

之所以叫他变量 是因为他是可变的 如下例

int num=10;
printf("%d",num);//10
num=20;
printf("%d",num);//20

创建变量时就将其初始化

int a;
printf("%d",a);//会报错 因为使用了未初始化的局部变量
//所以使用之前最好将其初始化 不然它的值我们在使用时不可控

6.2变量的命名

  • 只能由字母(包括大写和小写)、数字和下划线( _ )组成。
  • 不能以数字开头。
  • 长度不能超过63个字符。
  • 变量名中区分大小写的。
  • 变量名不能使用关键字。
  • 变量名最好有意义 不要胡乱起名

6.3 变量的分类

  • 局部变量 :在{}内部定义的变量
  • 全局变量 :在{}外部定义的变量
#include <stdio.h>
int global = 2019;//全局变量
int main()
{int local = 2018;//局部变量//下面定义的global会不会有问题?int global = 2020;//局部变量printf("global = %d\n", global);//打印的是2020 就近原则return 0;
}

全局变量和局部变量的名字可以相同 但是在两者都可以使用的场合 局部优先
这就是上面的global打印的是2020的原因 当然定义时要避免重名

6.4变量的使用

  • 实现两个整数的相加
#include <stdio.h>
int main()
{int num1 = 0;int num2 = 0;int sum = 0;printf("输入两个操作数:>");scanf("%d %d", &num1, &num2);//输入值可以使用scanf()函数 "%d"按照格式化输入//后面的数据要加上&取地址符号sum = num1 + num2;printf("sum = %d\n", sum);return 0;
}

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

1. 作用域

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

  • 局部变量的作用域是变量所在的局部范围
int main()
{int a=0;a就是一个局部变量
printf("%d",a);
{int b=20;b在{}内部可以打印
printf("%d",b);
}
printf("%d",b);在这里就无法打印了}

b变量在{}外部就无法打印了

  • 全局变量的作用域是整个工程
int a=100;全局变量
void test()
{printf("%d",a);
}
int main()
{printf("%d",a);可以使用
test();可以调用
return 0;
}

全局变量可以跨文件调用 使用前声明即可

在test.c文件中定义全局变量val
可以在main.c里使用 使用前用extern声明即可

但是注意全局变量不要滥用 因为它作用范围广 易被修改 所以不安全

2. 生命周期

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

  • 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束
int main()
{int a=10;
printf("%d",a);  这个括号内就是这个变量的作用域 也就是它的生命周期
}
printf("%d",a);无法打印
return 0;
}
  • 全局变量的生命周期是:整个程序的生命周期
    整个程序的生命周期也就是main函数的生命周期
    main函数结束 程序也就结束了

…未完待续

C语言学习——初识C语言(1)相关推荐

  1. C语言入门——初识C语言

    C语言入门--初识C语言 一. C语言的起源 二. 选择C语言的原因 (一). 设计特性 (二). 高效性 (三). 可移植性 (四). 强大而灵活 (五). 面向程序员 (六). 缺点 三. C语言 ...

  2. Python语言学习:python语言代码调试—异常处理之详细攻略

    Python语言学习:python语言代码调试-异常处理之详细攻略 目录 python语言代码调试-异常处理 异常捕捉可以使用 try/except 语句 相关文章 Python3 错误和异常 | 菜 ...

  3. python语言学习:python语言学习中的定义类、定义函数、封装api等详细攻略

    python语言学习:python语言学习中的定义类.定义函数.封装api等详细攻略 目录 python语言学习中的定义类 python语言学习中的定义函数 python语言学习中封装api pyth ...

  4. Python语言学习:python语言的特点、入门、基础用法之详细攻略

    Python语言学习:python语言的特点.入门.基础用法之详细攻略 相关内容 Python 基础教程 目录 python语言的特点 python语言的入门 python语言的基础用法 python ...

  5. C语言学习笔记---001C语言的介绍,编译过程原理,工具等

    C语言学习笔记---001C语言的介绍,编译过程原理,工具等 创梦技术交流平台:资源下载,技术交流,网络赚钱: 交流qq群:1群:248318056 2群:251572072 技术交流平台:cre.i ...

  6. Python语言学习:Python语言学习之硬件交互应用(arduino、树莓派等)相关的简介、案例应用之详细攻略

    Python语言学习:Python语言学习之硬件交互应用(arduino.树莓派等)相关的简介.案例应用之详细攻略 目录 Python与硬件交互应用 1.适合运行python的嵌入式硬件系统 1.1. ...

  7. Python语言学习:Python语言学习之正则表达式常用函数之re.search方法【输出仅一个匹配结果(内容+位置)】、re.findall方法【输出所有匹配结果(内容)】案例集合之详细攻略

    Python语言学习:Python语言学习之正则表达式常用函数之re.search方法[输出仅一个匹配结果(内容+位置)].re.findall方法[输出所有匹配结果(内容)]案例集合之详细攻略 导读 ...

  8. 【C语言】初识C语言

    目录 1.什么是C语言 2.第一个C语言程序 3.数据类型 4.变量,常量 4.1 定义变量方法 4.2 变量的命名 4.3 变量的分类 4.4 变量的使用 4.5 变量的作用域和生命周期 4.5.1 ...

  9. 【零基础入门C语言】 初识C语言—1

    声明:[零基础入门C语言]系列是博主对B站up主:鹏哥C语言所分享教学内容的学习笔记,并且该系列每篇博客都会将博主听课后总结的纸质版笔记附于文末,供大家参考. 初识C语言章节的内容在于初步了解C语言的 ...

最新文章

  1. 元宇宙开发:你在虚幻引擎中的第一个虚拟现实游戏
  2. 怎样使一个Android应用不被杀死?
  3. PHP类参数_100 个最常用的 PHP 函数
  4. 单片机启动流程(以STM32为例)
  5. 网络编程遇到的一个错误?
  6. 局域网传输文件_如何“互传文件”?简单几步,方便快捷
  7. 简单使用Java实现微信公众号推送模板消息
  8. 论文阅读:Aspect-based Sentiment Classification with Aspect-specific Graph Convolutional Networks
  9. 看完《我的前半生》的些许感悟
  10. 企业预算管理实践:小故事大道理
  11. PyG教程(4):自定义数据集
  12. 苹果手机扬声器没声音怎么办_苹果手机没有声音处理办法 !
  13. 系统集成项目管理工程师高频考点(第六章)
  14. 微信小程序demo1计算器
  15. python分析微博粉丝_python数据分析微博热门
  16. VC++6.0 用gSoap客户端访问WebService
  17. c语言成绩筛选,c语言筛选质数
  18. 矩阵论(零):线性代数基础知识整理(5)——特征值与相似
  19. 燃气灶电气线路图及原理_脉冲点火燃气灶工作原理,带图,越详细越好
  20. 有哪些加薪理由是我们千万不能用的?

热门文章

  1. android fota解决方案,FOTA解决方案让汽车系统快速升级
  2. 对那些想写个网络音乐播放器、电台玩玩的同学提供一些原料
  3. 吴军《罗曼·罗兰 | 年轻时为什么需要理想主义?》
  4. python中soup_python中BeautifulSoup的详细介绍(附代码)
  5. mysql8.0 安装与卸载
  6. 如何通过自己的app打开twitter的指定功能
  7. 计算机网络基础知识~简单易懂-有图有内容建议码友们点亮拇指+收藏呐~
  8. 《绿光森林》惹争议 收视冠军也是挨骂冠军
  9. Linux下QT串口通过无线模块收发十六进制数据
  10. python如何录音_python实现录音功能