初识c语言

时间:2022-10-28 20:00:36

前言

小伙伴们大家好,今天开始,我们即将开启c语言的正是学习,从初级到进阶,想必大家都听说过c生万物,可想而知c语言对于我们程序员的重要之处,从此篇博客开始将持续更新c语言的相关知识,让我们开始系统的学习吧!我们的初识c语言是基本了解C语言的基础知识,对C语言有一个大概的认识。 每个知识点就是简单认识,不做详细讲解,后期都会细讲。这样后期学习起来会更容易接收,我的风格是将各种知识点以题的方式讲解,使抽象得概念化为具体的应用

特别说明:我们这篇博客只是现代大家简单的认识c语言的知识,不会深入讲解,等初识c语言后面,每一个知识点都会深入讲解

1.什么是c语言

C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易 的方式编译、处理低级存储器、产 生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。 其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。我使用的VS编译器,大家可以自行去官网下载

2.第一个C语言程序

一个先插曲

零基础的小伙伴可能会想hello,world我用qq,微信也能敲出来啊,你这么写有什么用呢,其实则不然,你有没有想过你为什么能用qq微信敲出来呢,其实代码写hello,world就是一个软件底层对终端的控制,正是因为这些代码的实现,才能有我们日常软件功能的实现

这是基本的程序框架,后续有什么代码继续丰富就行了,也就是说写代码先写上这个框架

#include<stdio.h>

int main()

{

      return 0;

}

代码解释:

main函数是程序的入口 ,一个工程中main函数有且仅有一个,c语言执行打印函数printf(库函数)如果使用库函数必须引用头文件#include<stdio.h>,

%d打印整型,%c打印字符型,%f打印浮点型数,%lf答应双精度浮点数

%s打印字符串,%p以地址形式打印,%x打印16进制数

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
printf("hello,world\n");
return 0;
}

初识c语言

可能有的小伙伴,代码执行正确,单数并没有弹出控制台的输出框,那就看看怎么设置吧

初识c语言

初识c语言

特别说明,这句话#define _CRT_SECURE_NO_WARNINGS 1,这句话是为了避免VS编译器报错,因为当我们使用scanf时VS认为scanf不安全,建议我们使用VS编译器自己的scanf_s,scanf是C语言自己提供的,我们肯定得按着C语言的语法要求来,所以在源文件第一行加上这句话#define _CRT_SECURE_NO_WARNINGS 1,使scanf在VS合法

3.数据类型

char        //字符数据类型  1字节

short       //短整型    2字节

int         //整形  4字节

long        //长整型  4字节

long long   //更长的整形  8字节

float       //单精度浮点数  4字节

double      //双精度浮点数 8字节

注意:存在这么多的类型,其实是为了更加丰富的表达生活中的各种值。

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语言

计算机中的单位:

bit-比特位

byte-字节= 8bit    kb- 1024byte    mb- 1024 kb   gb- 1024 mb

tb- 1024gb           pb- 1024tb

3.1类型的使用:

只是适当举例

char ch = 'w';
int weight = 120;
int salary = 20000;

4.变量和常量

生活中的一些数据:  有些数据不能变:血型,性别,圆周率

                             有些数据一定可变:工资,年龄,体重

不变的值,C语言中用常量的概念来表示,变得值C语言中用变量来表示。

4.1变量

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

4.2 变量的分类

局部变量   全局变量

二者有很大的区别,但是简单来说,全局变量,定义在代码块({})之外的变量,局部变量,定义在代码块内部的变量

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

4.2.1.1作用域

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

局部变量的作用域是变量所在的局部范围。

全局变量的作用域是整个工程。

4.2.1.2生命周期

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

  1. 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
  2. 全局变量的生命周期是:整个程序的生命周期。
  3. 字符串+转义字符+注释
#include <stdio.h>
int global = 2019;//全局变量
int main()
{
   int local = 2018;//局部变量
   //下面定义的global会不会有问题?
   int global = 2020;//局部变量
   printf("global = %d\n", global);
   return 0;
}

初识c语言

上面的局部变量global变量的定义其实没有什么问题的! 当局部变量和全局变量同名的时候,局部变量优先使用,但是局部变量和全局变量不要相同容易产生bug

4.2.2变量的使用

scanf是一个输入函数,例scanf("%d%d", &num1, &num2); %d为输入数据得类型,&num1为接收数据的变量,&取地址符,简单理解就是取出变量

int main()//主函数,程序的入口,有且仅有一个
{
int num1 = 0;
int num2 = 0;
int sum = 0;//c语言规定变量要定义在当前代码块的最前面
scanf("%d%d", &num1, &num2);
sum = num1 + num2;
printf("sum=%d\n", sum);
return 0;
}

初识c语言

4.3常量

C语言中的常量和变量的定义的形式有所差异。

C语言中的常量分为以下以下几种:

字面常量    const 修饰的常变量     #define 定义的标识符常量    枚举常量

4.3.1 const 修饰的常变量

const可以将n锁值,使之不能改变否则报错,例子上的 n被称为 const 修饰的常变量, const 修饰的常变量在C语言中只是在语法层面限制了 变量n 不能直接被改变,但是n本质上还是一个变量的,所以叫常变量。

int main()
{
const int n = 10;//const可以将n锁值,使之不能改变否则报错
n = 9;//这里报错
return 0;
}

初识c语言

4.3.2#define 定义的标识符常量

这里只是简单介绍,#define其实起到替换作用将出现MAX得地方替换成10,后面会详细讲解

#include<stdio.h>
#define MAX 10
int main()
{

int arr[MAX] = {0};

printf("%d\n", MAX);
return 0;
}

初识c语言

4.3.3枚举常量

枚举概念复杂,我们只是简单了解有枚举常量而已,关于枚举的只是后面会系统的讲解, //注:枚举常量的默认是从0开始,依次向下递增1的

#include <stdio.h>
enum sex//枚举
{
//MALE,FEMALE,SECRET是枚举常量
male,
female,
secret
};
int main()
{
//enum sex s = male;
printf("%d\n", male);
printf("%d\n", female);
printf("%d\n", secret);
return 0;
}

初识c语言

5.字符串+转义字符+注释

5.1字符串

注:字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串 内容。\0得值就是0

因为arr2没遇到‘\0’,即没有遇到结束标志,就会一直输出,而"bit"中隐藏了一个\0,所以会自动结束

#include <stdio.h>
int main()
{
   char arr1[] = "bit";
   char arr2[] = {'b', 'i', 't'};
   char arr3[] = {'b', 'i', 't' '\0'};
   printf("%s\n", arr1);
   printf("%s\n", arr2);
   printf("%s\n", arr3);
   return 0;
}

初识c语言

5.2 转义字符

假如我们要在屏幕上打印一个目录: c:\code\test.c 我们该如何写代码?

#include <stdio.h>
int main()
{
printf("c:\code\test.c\n");
   return 0;
}

实际上程序运行的结果是这样的:

初识c语言

这里就不得不提一下转义字符了。转义字符顾名思义就是转变意思。 下面看一些转义字符。

初识c语言

面试题

strlen需要引用头文件#include<string.h>

 \62被解析成一个转义字符,代表两个8进制位,需要转换成十进制对应的ascill码值对应的字符62(8进制)-->50(10进制)--->字符'2'

然后再数就是14

#include <stdio.h>
#include <string.h>
int main()
{
printf("%d\n", strlen("abcdef"));//6
// \62被解析成一个转义字符
printf("%d\n", strlen("c:\test\628\test.c"));
return 0;
}

初识c语言

我的这张ascill码标太糊了哈哈哈,还是自己去网上找吧

初识c语言

5.3注释

 1. 代码中有不需要的代码可以直接删除,也可以注释掉

  1. 代码中有些代码比较难懂,可以加一下注释文字注释有两种风格:
  2. C语言风格的注释 /*xxxxxx*/
  3. 缺陷:不能嵌套注释
  4. C++风格的注释 //xxxxxxxx
  5. 可以注释一行也可以注释多行