什么是C语言
要想了解什么是C语言我们可以对比汉语,法语,日语,英语这些都是人与人交流的语言。C语言就是人与计算机交流的语言。
C语言广泛应用于底层开发的语言,什么是底层呢?一台计算机本体是属于硬件,靠操作系统(linux,windows,mac……)通过驱动层驱动,这个操作系统和硬件就属于底层,软件是非底层的用C语言不是不能开发但是对比java,c++ 是有劣势的。
C语言不是一天建成的,在此之前最先有的是二进制语言后来发展成有一串二进制编码形成的注记符组成的汇编语言,在接下来出现了高级语言B语言,1972年由B语言进一步发展形成了C语言。但是当时的C语言并不像现在这样成熟,C语言被当时的互联网公司引用增加一些函数和功能但是每个公司不尽相同。在二十世纪八十年代为了避免各大开发商使用C语言语法有差异,由美国国家标准局(ANSI)制定了一套完整的C语言国际语法(ANSIC)作为C语言最初的语法标准。往后也进一步修改完善出现了C90 C99 C11等新的标准语法。
第一个C语言程序
#include<stdio.h>
int main()
{
printf("hello world");
return 0;
}
上面的一串C语言代码是最为基础的一串代码了。
int main() { return 0; }
上面的这个结构是C语言的主函数的基本结构,整个C语言程序中main函数是程序的入口main函数有且仅有一个。return 0;是返回0,返回零是C语言最初约定俗称的正确返回,而非零则是错误的。
printf是一个库函数,它是专门用来打印和输出的
库函数是在头文件中包含的直接使用是违法的,在用库函数时我们必须调用头文件#include<stdio.h>,来声明库函数是合法的。
代码的输出结果
数据类型
在商店里看到一本书《c语言程序设计现代方法》价格是“81.3”,页数是674页。其中页数就是整形,价格就是浮点型,书名和书中的文字是字符型。可以看出生活中会处处遇到数据类型。
在C语言中也是有这三种基本数据类型.
其中整形分为: 短整型(short),整形(int),长整型(long),更长整型(long long)
浮点型分为:单精度浮点型(float),双精度浮点型(double).
字符型只有char
整形 | 浮点型 | 字符型 |
---|---|---|
short | double | char |
int | float | |
long | ||
long long |
那么这些数据类型在在C语言中的存储空间是多大呢?
让我们来看下面这一串代码:
#include<stdio.h>
int main()
{
printf("%zu\n", sizeof(char));
printf("%zu\n", sizeof(short));
printf("%zu\n", sizeof(int));
printf("%zu\n", sizeof(long));
printf("%zu\n", sizeof(long long));
printf("%zu\n", sizeof(float));
printf("%zu\n", sizeof(double));
return 0;
}
这串代码中%zu代表输出由sizeof()返回值的大小(大部分编译器可以用%d(输出十进制的大小)代替)
最终结果如下所示:
数据类型 | 所占空间大小(vs2019编译器输出结果) |
---|---|
char | 1 byte |
short | 2 byte |
int | 4 byte |
long | 4 byte |
long long | 8 byte |
float | 4 byte |
double | 8 byte |
计算机是二进制存储数据的。
其中bit(比特位)就是一个二进制位,是计算机中最小的存储单位。
byte(字节)是8bit
计算机单位 | 单位换算 |
---|---|
1 byte | 8 bit |
1 kb | 1024 byte |
1 mb | 1024 kb |
1 gb | 1024 mb |
1 tb | 1024 gd |
1 pb | 1024 tb |
当你看到int和short类型的大小是否有这样一个疑问为什么他们两个一样大?
这是因为C语言规定sizeof(int)<=sizeof(long)
变量
在生活中人的年龄,身高 ,体重都会发生改变这种就叫做变量。
圆周率,性别血型等不能改变的量为常量
变量的定义方法
#include<stdio.h>
int main()
{
int age = 19;
double weight = 88.5;
int hight = 186;
return 0;
}
int 是数据类型 int age;相当于创建了一个大小为sizeof(int)的空间名称为age,int age = 19;相当于在该空间内存放19这个数值。
变量的分类
#include<stdio.h>
int a = 100;
int main()
{
int a = 10;
printf("%d",a);
return 0;
}
局部变量
- {}内部定义的变量
全局变量
- {}外部定义的变量
上面的代码是{}内外都有a, 该程序正确吗?printf("%d",a);会输出什么值?
上面的局部变量global变量的定义其实没有什么问题的!
当局部变量和全局变量同名的时候,局部变量优先使用。
printf("%d",a);输出的结果为10;
(但还是建议不要把全局变量和局部变量命名相同)
变量的应用
- 写一个输入两个数求和的程序
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d %d",&a,&b);
int sum = a + b;
return 0;
}
scanf 是一个输入函数要输入赋值的变量必须是其地址
- 1 初始化
int num1 = 0;
int num2 = 0;- 2 输入2个整数
scanf("%d %d", &num1, &num2);- 3 求和
int sum = num1 + num2;- 4输出
printf("%d\n", sum);
变量的作用域和生命周期
变量的作用域
- 局部变量
局部变量的作用域是变量所在的局部范围- 全局变量
全局变量的作用域是整个工程。
变量生命周期
- 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束
- 全局变量的生命周期是:整个程序的生命周期
从以上可以看出变量的作用域的范围约等于生命周期
引申 :
在不同.c文件中变量如何跨文件使用呢
- test1.c
int a =10;
- test2.c
#include<stdio.h>
int main()
{
printf("%d",a);
return 0;
}
在编译器中有上面两个.c文件是会报错的,那么应该怎么处理呢?
报错的原因是在该.c文件内找不到a变量,那么用extern来声明来自外部的符号
把test2.改成下面这种格式就行了
#include<stdio.h>
extern int a;
int main()
{
printf("%d",a);
return 0;
}
喜欢的话欢迎继续观看C语言入门初识(中)