语言是交流的工具 而人和计算机交流依靠的就是计算机语言:比如说C、C++、java、python、go… 这篇博客就带大家简单认识一下C语言的基础知识,让大家对C语言有一个大概了解
1.什么是C语言?我们知道,计算机最底层是各种硬件,硬件之上是操作系统,想让硬件工作就需要操作系统,而操作系统就是通过调用驱动层和硬件交互。在操作系统之上我们可以安装很多应用软件(也叫上层软件),在操作系统之下一般叫做底层软件,c语言擅长的就是底层软件的开发,但这并不代表它不能进行上层开发。c语言在嵌入式,单片机开发中用的很多,进来两三年物联网的兴起又让c语言迎来了一次春天。
以下是对C语言的一些简单介绍
2. 写一个简单的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…
这里我使用的是VS2019集成开发环境 集成开发环境又叫IDE
一个集成开发环境包含编辑器 编译器(如MSVC)调试器
而要达到输出hello world的效果
首先要创建一个项目 项目的命名尽量不使用中文,不要使用特殊字符,不要使用空格(可以用下划线_)
新建好项目后 我们要在源文件中新建项 选c++文件 然后将cpp文件改为.c文件添加即可
.c为后缀的是C语言的代码
.cpp为后缀的是c++的代码
#includeint main()//主函数
{//printf是一个库函数 由C语言标准库提供 可以直接使用 使用前需要包含头文件
//功能:在屏幕上打印信息
//stdio就是标准输入输出 standard input/output
printf("hello world\n");在屏幕上打印 hello world
return 0;
}
int main ()
{
return 0;
}
这就是main函数的一个标准模板
当然除了上面的标准定义外 main函数也可以写成
int main(int argc,char*argv[])
{return 0;
}//定义1
int 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是一个操作符 而不是函数哦
#includeint 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
为什么long和int长度一样呢?
C语言标准规定:sizeof(long)>=sizeof(int)
所以long的长度和int长度可以是相等的
char ch = 'w';//单个字符用单引号引起来
int weight = 120;//存放体重
float salary = 20000.2;
假设有一个32G内存的电脑 当你创建一个变量时 会向内存申请一块空间 然后放入我们要存的数据
注意:一个汉字占两个字符 不能用单引号引汉字 汉字当成字符串处理
生活中的有些值是不变的(比如:圆周率,性别,身份证号码,血型等等)
有些值是可变的(比如:年龄,体重,薪资)
不变的值,C语言中用常量的概念来表示,变得值C语言中用变量来表示。
类型 变量名 = 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变量的命名#includeint global = 2019;//全局变量
int main()
{int local = 2018;//局部变量
//下面定义的global会不会有问题?
int global = 2020;//局部变量
printf("global = %d\n", global);//打印的是2020 就近原则
return 0;
}
全局变量和局部变量的名字可以相同 但是在两者都可以使用的场合 局部优先
这就是上面的global打印的是2020的原因 当然定义时要避免重名
#includeint 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;
}
…未完待续
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧