初识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),程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的
而限定这个名字的可用性的代码范围就是这个名字的作用域。
- 局部变量的作用域是变量所在的局部范围。
#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、生命周期
变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
- 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
如上文代码,局部变量a的生命周期即它记入大括号到出大括号的过程。 - 全局变量的生命周期是:整个程序的生命周期。
如上文全局变量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.c语言注释风格
/*
int a = 10;
a=5;
*/
缺陷:不支持嵌套, /* 会与最先遇到的 */ 结合成一段注释语句。
2.c++注释风格
//int a=10;
// a=5;
可以注释一行也可注释多行。
结语
初识C语言(上) 就给大家介绍的这里,感谢各位读者的阅读,接下来的内容博主会陆续给大家介绍的,如果觉得笔者写得还可以的话,麻烦各位友友们一键三连哦!如果笔者这篇文章有什么错误和不足的地方,也恳请大家不吝赐教!谢谢大家了!!