零基础玩转C语言-初识C语言(上)

简介: 零基础玩转C语言-初识C语言(上)

前言:

本章只是基本了解C语言的基础知识,对C语言有个大概的认识,能够基本读懂代码,适合零基础学习C语言的同学,每个知识点就是简单的认识,不做详细的讲解,后期还会出详细的知识讲解。

一、如何学好C语言

1.1鼓励你,为你叫好。

C生万物
编程之本
长远IT职业发展的首选
C语言是母体语言,是人机交互接近底层的桥梁
学会C/C++,相当于掌握技术核心
知识点一竿子打通
IT行业,一般每10年就有一次变革
近50年间,在IIOBE 排行榜中,C/C++位置长期霸占前三名,没有丝毫撼动
可谓经典永不过时!

1.2挤时间学习

·戴王冠,必承其重

·如果你总是和别人走一样的路怎么才能保证超越别人,那就得付出不一样的努力

·真正成为一个领域的专家,至少需要付出10000小时的训练

1.3学好编程,不仅仅是学好C语言

必须要学好:

计算机语言(C/C++,Java等等),算法与数据结构,操作系统,计算机网络,项目实战,数据库

二、初始C语言(上)

重点:

1.什么是C语言

2.第一个C语言程序

3.数据类型

4.变量、常量

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

6.选择语句

7.循环语言

8.函数

1.什么是C语言

自然语言:汉语、日语、英语......等等,这些都是人与人之间交流的语言

计算机语言:人与计算机交流的语言,eg:C/C++/Java/python/go/php等等,计算机语言有上千种,C语言就是一种计算机语言,广泛应用于底层开发

C语言是面向过程的编程语言,而C++/Java等是面向对象的编程语言

美国国家标准局为C语言定制了一套完整的标准语法,称为ANSI  C计算机处理的是二进制的信息(100010101),但这样太麻烦,便产生了汇编语言(如00010000表示Add,这种就叫做助记符),然后又产生了B语言,接着是C语言(高级语言),但是由于不统一,便产生了一套标准

编译器主要有:Clang,GCC,MSVC(VS集成开发环境的编译器)

集成开发环境:就是辅助程序员开发的应用软件,如VS2019,VS2022,Devc++,CodeBlocks,集成了很多的子功能:编辑,编译,链接,运行,调试

2.第一个C语言程序

在屏幕上打印:Hello World

#include<stdio.h>
int main()
{
  printf("Hello World\n");  // \n是换行符(类似于Enter回车键)
  return 0;
}

解释:

#include<stdio.h>是头文件的包含,stdio中的std是标准,i是输入,o是输出

main函数是程序的入口,并且一个程序中有且只有一个main函数

printf是库函数,是用来打印输出的,库函数的使用得包含头文件,它的头文件就是stdio.h

return 0是在main函数结束的返回值为0

除了第四行,其他的部分都是C语言程序固定部分,是敲代码不可缺少的部分

当然,学习C语言肯定需要好的工具,vs2019,vs2022都可以,具体安装教程可以看这个,强力推荐鹏哥的C语言视频,讲解的很细致,个人觉得是最好的C语言学习课程

https://www.bilibili.com/video/BV11R4y1s7jz/?spm_id_from=333.999.0.0&vd_source=ca7656038bc9f10870c8b9fb0a82e2cf

3.数据类型(用来创建变量的)

char         //字符串数据类型

short        //短整型

int            //整型

long         //长整型

long long  //更长的整型

float          //单精度浮点型(浮点数就是小数)

double      //双精度浮点型

Answer:没有,字符串通常是放在字符数组中的


Question 2:为什么出现这么多类型?


Answer:其实是为了更加丰富的表达描述生活中的各种值


Question 3:每种类型的大小是多少?


Answer:每个类型后面对应的就是其大小(此处的%d是以十进制的形式打印整数)

#include<stdio.h>
int main()
{
  //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
  return 0;
}

C语言标准:sizeof(long long) >sizeof (long) >=sizeof (int) >sizeof (short) >sizeof (char)


补充:计算机中常见单位及换算:

bit      -比特位

byte   -字节

KB                          1byte=8bit

MB                         1KB=1024byte

GB                          1MB=1024KB

TB                          1GB=1024MB

PB                          1TB=1024GB

4.变量、常量

4.1定义变量的方法


变量数据类型+变量名(type+name)

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

4.2变量的分类

·局部变量:在{ }内部定义的定义的变量

·全局变量:在{ }外边定义的变量

#include<stdio.h>
int a=100; //全局变量
int main()
{
    int a=1000;   //局部变量
    printf("a=%d",a);
    return 0;
}

注意:当局部变量和全局变量同名的时候,局部变量优先,所以上面代码的结果是1000


4.3变量的使用


#include<stdio.h>
int main()
{
  int a=0;
  int b=0;
  int sum=0;
  scanf("%d %d",&a,&b);
  sum=a+b;
  printf("sum=%d\n",sum);
  return 0;
}

此处出现了输入函数scanf,注意scanf格式后面不要加\n,同样这里的%d是以十进制的形式输入,&是取地址符,scanf("%d",&a)意思就是输入一个值并放入a的地址去,让a等于输入的值


4.4变量的命名

·只能由字母(包括大写和小写),数字和下划线(_)组成

·不能以数字开头

·长度不能超过63个字符

·变量名大小写不同,算两个不同的变量

·变量名不能使用关键字(关键字在下一节会讲)

·变量名取得尽量有意义

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

作用域:变量作用的范围

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

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

生命周期:变量从创建到销毁之间的一段时间

                 局部变量的生命周期:进入作用域生命周期开始,出作用域生命周期结束

                 全局变量的生命周期:就是整个程序的生命周期

4.6常量

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

· 字面常量

· const修饰的常变量(修饰以后变量还是变量,只是具有了常属性)

· #define定义的标识符常量

· 枚举常量

#include<stdio.h>
//枚举常量(枚举:就是一一列举)
//三原色:红,绿,蓝
//性别:男,女,未知
//星期:1,2,3,4,5,6,天
//自定义类型
enum Color   //enum是枚举关键字
{
    //枚举常量
  RED,  //这里用,而不是;
  GREEN,  //默认这几个常量为0,1,2;如果自己定义为7,那这三个就是7,8,9
  BLUE,
};   //注意这里有逗号
int main()
{
   enum Color c=RED;
   printf("%d\n",RED); //打印的结果为0
   return 0;
}
int main()//这里只是做个示范,记住一个程序只能有一个main函数
{
//字面常量演示
    3.14; //字面常量
    1000; //字面常量
//const(中文意思:常属性的),用来修饰变量
   const int a=10;  //a就是const修饰的常变量,但是本质上a还是变量
   printf("a=%d\n",a);  //a=10
   a=100;               
   printf("a=%d\n",a);  //a=10;因为const修饰的变量具有常属性,值不会改变
   int arr[10]={0};
   const int n=10;
   int arr2[n]={0};  //这是错误的,const并没有使变量变成常量(数字的个数[ ]里不能用变量表示,只能用常量)
//#define定义的标识符常量
   #define M 100  //(没有逗号,而且这条语句要写在主函数之前)
   int arr[M]={0}; //这里的M是常量而不是变量
   int a=M;
   printf("%d\n",a);
   return 0;
}

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

5.1字符串

"hello world.\n"

这种由双引号引起来的一串字符就是字符串


注意:字符串的结束标志是\0(虽然看不到,但是一直存在),但是计算字符串长度时,\0不算字符串长度

#include<stdio.h>
int main()
{
   char arr1[]="bit";   //这个字符串的结尾自动带有'\0'作为字符串的结束标志
   char arr2[]={'b','i','t'}; //这个结尾没有\0,打印出来就不知道什么时候结束,就会乱码
   char arr3[]={'b','i','t','\0'}; //这个才是正确的写法,结果和第一个一样
   printf("%s\n",arr1);
   printf("%s\n",arr2);
   printf("%s\n",arr3);
   return 0;
}

5.2转义字符

问题:如果想在平面上打印一个目录:c:\code\test.c

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

这样代码运行结果是这样的:

c:code  est.c

这是因为转义字符的原因,要想打印就得\\(反斜杠)取消转义,下面来介绍转义字符:

\t:水平制表符:就相当于Tab键(每8个字符可以看作一个水平制表符,如果遇到 \t 之前未满8个字符 则 \t 就补空格直到满8个)

\ddd:可以接一个到三个,不一定是三个

\xdd:x是固定的,十六进制有:0 1 2 3 4 5 6 7 8 9 A B C D E F

问题1:怎么打印一个单引号  ' ?

printf("%c\n",'\'');  //%c是用来打印字符的

问题2:怎么打印一个双引号  " ?

printf("%s\n","\"");  //%s是用来打印字符串的

单引号和双引号的区别:

  • 'A' 表示单个字符大写字母A,占用1个字节
  • "A" 表示字符串,该字符串只有1个大写字母A组成,占用2个字节空间,每个字符串末尾自动会加上一个空字符 '\0'

问题3:计算下面字符串的长度

这里用到了strlen函数,这个函数是计算‘\0’之前的字符串个数,如果没有\0,那就不会结束,随机给一个值,用这个库函数之前还要引头文件

#include <string.h>

第三个为啥\181不算一个,因为8进制没有8,所以不算是一个转义字符

#include<stdio.h>
int main()
{
  printf("%d\n", strlen("abc"));
  printf("%d\n", strlen("c:\test\111\test.c"));//13  \t \111 各算一个字符
  printf("%d\n", strlen("c:\test\181\test.c"));//15     \1 \t  各算一个字符
  return 0;
}

5.3注释

(1)代码有一些不需要的可以直接删除,也可以注释掉

(2)代码中有些代码比较难懂,可以加一下注释文字

注释的两种风格:

【1】/*xxxxxxx*/      缺陷:不能嵌套注释,只能从头注释到尾

【2】//xxxxxxxxxx    推荐这种,可以注释多行也可以注释一行

6.选择语句(本处只简单介绍if else语句)

C语言——结构化的程序化设计语言,包括了顺序结构,选择结构(有两种:if 和switch语句),循环结构(有三种:while,for和do while语句)

选择:

如果你好好学习,校招时拿一个好offer,走上人生巅峰。

如果你不学习,毕业等于失业,回家卖红薯。

代码如下:

#include<stdio.h>
int main()
{
    int input=0;
    printf("你打算好好学习吗(1\0)\n");
    scanf("%d",input);
    if(input==1)
    {
      printf("好offer\n");
    }
    else
    {
       printf("回家卖红薯\n");
    }
    return 0;
}

注意:C语言中的==相当于是数学中的等于号,而=是赋值的意思


7.循环语言

C语言中的循环语句有三种

·while语句

`for语句(以后讲)

·do......while语句(以后讲)

代码实现上面菜鸟不断敲代码成为大牛循环的流程图:

#include<stdio.h>
int main()
{
int line=0;
while(line<30000)
{
  line++;
  printf("我要继续努力敲代码\n");
}
if(line==30000)
   printf("代码敲到30000行,成为大牛拿到好offer,迎娶白富美\n");
return 0;
}

8.函数

类比        原料   ——>工厂——>产品

函数:输入参数——>函数——>返回值(函数都包括这些部分)

eg:   y=f(x)=2*x+5   给x一个值(输入参数),进入函数,就会返回一个y值(返回值)

下面通过自定义函数来实现两个数的相加:

#include<stdio.h>
//自定义函数也可以写在后面但是要在主函数之前进行函数声明
//int Add(int x,int y);(自定义函数主体在后面这样写)
int Add(int x,int y)
{
   int z=x+y;
   return z;   //自定义函数的返回值
}
int main()
{
  int a=0;
  int b=0;
  int sum=0;
  scanf("%d %d",&a,&b);
  //  求和:sum=a+b
  sum=Add(a,b);
  printf("%d\n",sum);   //自定义函数的调用
   return 0;
}

三、易错练习题

想想这个代码打印的结果是多少?

#include <stdio.h>
#include <string.h>
int main()
{
    char arr[] = {'b', 'i', 't'};
    printf("%d\n", strlen(arr));
  return 0;
}

answer:结果是个随机值,因为strlen并没有找到'\0'


四、结语:彼方尚有荣光在,少年不惧岁月长

初始C语言部分暂时先介绍到这里,后面还有部分内内容正在整理...

感觉笔者写的还可以,或者自己有些许收获的时候,麻烦铁汁们动动小手,给俺来个一键三连,万分感谢


目录
相关文章
|
6月前
|
存储 程序员 C语言
C语言 (2)
C语言 (2)
31 0
|
11月前
|
编译器 C语言 C++
|
5月前
|
机器学习/深度学习 人工智能 算法
|
5月前
|
C语言
【C语言】:图形打印
【C语言】:图形打印
52 0
|
6月前
|
安全 算法 网络安全
C语言在安全领域的应用
本文探讨了C语言在网络安全中的应用,包括密码学算法实现、网络安全工具开发和安全协议实现。C语言因其高效性、可控性和跨平台性,常用于实现AES、RSA等加密算法,开发网络扫描器和入侵检测系统,以及实现SSL/TLS、IPSec等安全协议。代码示例展示了C语言如何进行AES加密解密。尽管C语言在安全领域有显著优势,但面对不断演变的威胁,持续学习和研究新的安全技术至关重要。
C4.
|
6月前
|
存储 算法 安全
C语言的算法结构
C语言的算法结构
C4.
79 0
|
12月前
|
Java 编译器 C语言
初识C语言(1)
初识C语言(1)
59 0
|
存储 编译器 C语言
|
程序员 编译器 数据库
什么是C语言
C语言是一种通用的高级编程语言,由美国计算机科学家丹尼斯·里奇(Dennis Ritchie)在20世纪70年代初开发。C语言以其简洁、高效和可移植性而闻名,成为了许多计算机系统和应用程序的首选编程语言
120 0
|
程序员 编译器 C语言
C语言的介绍
一、C语言是一种高级编程语言 具有广泛的应用领域和强大的功能。它以其简洁、高效和可移植性而受到广大程序员的喜爱。 二、C语言的特点之一是语法简洁明了 它采用了结构化的编程风格,使得程序的逻辑更加清晰,易于理解和维护。同时,C语言还提供了丰富的控制结构和数据类型,使得程序员可以灵活地处理各种复杂的问题。 三、C语言的另一个优点是高效性 C语言的编译器能够将源代码转换为机器语言,使得程序的执行速度非常快。这使得C语言成为开发高性能应用程序的首选语言,如操作系统、嵌入式系统和游戏引擎等。 此外,C语言还具有良好的可移植性。由于C语言的标准定义了一套统一的规范,使得同一份源代码可以在不同的平台上编译和
63 0