零基础玩转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语言部分暂时先介绍到这里,后面还有部分内内容正在整理...

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


目录
相关文章
|
26天前
|
C语言
C语言练习5
C语言练习5。
12 2
|
1月前
|
Java 编译器 程序员
C语言 (3)
C语言 (3)
16 0
|
1月前
|
自然语言处理 编译器 C语言
C语言:练习
C语言:练习
21 0
|
6月前
|
Linux 编译器 C语言
C语言必知必会
C语言必知必会
49 0
|
4月前
|
编译器 C语言 C++
|
8月前
|
编译器 C语言 C++
初识c语言
一个程序运行起来如果报错或者结果是上一次运行程序的结果那么就是你写的程序有问题,可以用cursor这个编码chatgpt这个软件看一下那里出现的问题,但是要保证自己的代码是完整的我们在vs2022中要创建的源文件,头文件是用来存放自定义函数的。因为我们学习的是c语言所以我们创建的文件的以.c结尾的,不能是.cpp,因为c语言的语法规则和c++的语法规则不一样,要不然写出来的程序会报错。printf()函数在程序的函数体内实现,printf(“”)是负责打印(“”)里面的字符。scanf()函数的使用。
|
8月前
|
存储 编译器 C语言
初识C语言(四)
初识C语言(四)
|
9月前
|
算法 Serverless C语言
C语言假期作业 DAY 08
C语言假期作业 DAY 08
|
4月前
|
存储 C语言
初识C语言(2)
初识C语言(2)
38 0
|
5月前
|
C语言 C++
初识C语言(2)上
初识C语言(2)
35 0