最易理解的C语言教学 第一章

本章重点:
目录

1.什么是C语言

2.第一个C语言程序

3.C语言数据类型

4.变量、常量

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

 1. 什么是C语言?

语言是一门通用计算机编程语言 ,广泛应用于底层开发。 C 语言的设计目标是提供一种能以简易
的方式编译 、处理低级存储器 、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管 C 语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的
C 语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU )以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的 C 语言语法产生差异,由美国国家标准局 C 语言制
定了一套完整的美国国家标准语
法,称为ANSI C ,作为 C 语言最初的标准。 [1] 目前 2011 12 8 日,国际标准化组织( ISO )和
国际电工委员会( IEC )发布的C11标准
C 语言的第三个官方标准,也是 C 语言的最新标准,该标准更好的支持了汉字函数名和汉字
标识符,一定程度上实现了汉字编程。
C 语言是一门面向过程的计算机编程语言,与 C++ Java 等面向对象的编程语言有所不同。
其编译器主要有 Clang 、GCC、 WIN-TC SUBLIME MSVC Turbo C 等。
(C语言是一门高级语言)

1.1一定有朋友想问,那我们为什么要学C语言呢?现在那么多编程语言,Java、Python、go...等等 那么多优秀的语言,我们偏偏学c语言这种古老的语言?

       确实C语言挺老的了,好几十年了,但它依旧不会过时,C语言是母体语言,熟话说C生万物,学好C语言对我们长远的发展一定是有意的,就像我们使用的Windows系统大部分内核都是由C语言写的。我们想要在编程这条路上走的更远,学习C语言还是很有必要的,当然你学会了C语言再去学Java 、Python、c++ 等 ,学起来都会更加得心应手。这便是我学C语言的原因。学编程不急一时半会,要把基础知识学好,学扎实。

2.第一个C语言程序

#include <stdio.h>

int main()
{   
    printf("hello world\n");

    return 0;
}

输出结果:
解释:

//#include<stdio.h> 表示引用了standard input output标准输入输出头文件,像scanf printf都是这个头文件里,需要用到
//int 表示函数的返回类型
//int 表示函数的返回类型
//main 表示函数名 
//以main为函数名称为主函数,一个工程中有且只有一个。
//return 0  是函数的返回值,函数中要写明return 0,表示返回
//输出函数 printf   \n表示换行
//C语言规定,语句的结束符 用英文状态下的分号 ;来进行标识。

3.数据类型

char         // 字符数据类型
short       // 短整型
int         // 整形
long         // 长整型
long long   // 更长的整形
float       // 单精度浮点数
double       // 双精度浮点数
注:C语言中没有字符串类型

字符串则用" "(双引号)引起来
每种类型的大小(在内存中占几个字节)是多少呢?(我们打印出来看看)

#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;

}


可以看到大小分别为:
1 ,2,  4,  4,8,4,8, 8 

每种数据类型都可以用来存储不同的值  根据你需要存储的值的大小、与类型来选择用哪种数据类型

4. 常量、变量

在我们的日常生活中,有些值是不变的比如:圆周率,性别,身份证号码,血型等等)
不变的值, C 语言中用 常量 的概念来表示

有些值是可变的(比如:年龄,体重,薪资)
变的值 C语言中 用变量 来表示

4.1局部变量与全局变量

#include <stdio.h>
int global = 2022 // 全局变量
int main ()
{
    int local = 2020 ; // 局部变量
    int global = 2021 ; //如果把上面那个global放这里,它也就变成了 局部变量
    printf ( "global = %d\n" , global );
    return 0 ;
}

解释 :global是我们自己定义的变量名(下面的local也是)

总结:在一个函数内部定义的变量是局部变量,只能在函数内部使用。

注:当局部变量与全局变量同名时,局部变量优先级高于全局变量

故上面代码输出结果为:global=2021 

4.2 变量的使用

#include <stdio.h>
int main ()
{
    int num1 = 0 ;
  int num2 = 0 ;
    int sum = 0 ;
    printf ( " 输入两个操作数 :" );
    scanf ( "%d %d" , & num1 , & num2 );
    sum = num1 + num2 ;
    printf ( "sum = %d\n" , sum );
    return 0 ;
}
//
//scanf 输入函数 %d表示整型输入   &取地址符号  &num1 表示获取到num1在内存中的地址
//我们取到了地址,就可以往里面输入值
//printf 输出函数  %d表示整型输出 

 

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

作用域
作用域( scope )是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效 / 可用
而限定这个名字的可用性的代码范围就是这个名字的作用域。
1. 局部变量的作用域是变量所在的局部范围。
2. 全局变量的作用域是整个工程。
生命周期
变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
1. 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
2. 全局变量的生命周期是:整个程序的生命周期。

4.4 常量

C 语言中的常量和变量的定义的形式有所差异。
C 语言中的常量分为以下以下几种:
1.字面常量
2.const 修饰的常变量
3.#define 定义的标识符常量
4.枚举常量
#include <stdio.h>
// 举例
enum Sex
{
MALE ,
FEMALE ,
SECRET
};
// 括号中的 MALE,FEMALE,SECRET 是枚举常量
int main ()
{
    // 字面常量演示
    3.14 ; // 字面常量
    1000 ; // 字面常量
   
    //const 修饰的常变量
    const float pai = 3.14f ;   // 这里的 pai const 修饰的常变量
    pai = 5.14 ; // 是不能直接修改的!
   
    //#define 的标识符常量 演示
#define MAX 100
    printf ( "max = %d\n" , MAX );
   
    // 枚举常量演示
    printf ( "%d\n" , MALE );
    printf ( "%d\n" , FEMALE );
    printf ( "%d\n" , SECRET );
    // 注:枚举常量的默认是从 0 开始,依次向下递增 1
    return 0 ;
}
注:
上面例子上的 pai 被称为 const 修饰的常变量, const 修饰的常变量在 C 语言中只是在语法层面限制了
变量 pai 不能直接被改变,但是 pai 本质上还是一个变量的,所以叫常变量。

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

5.1 字符串

"hello bit .\n"
这种由双引号( Double Quote )引起来的一串字符称为字符串字面值( String Literal ),或者简称字符
串。
注:字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串 内容。
注:下面会提到下数组arr[2]中,arr是数组名 []中括号里放数组元素个数 
#include <stdio.h>
// 下面代码,打印结果是什么?为什么?(突出 '\0' 的重要性)
int main ()
{
    char arr1 [] = "bit" ; //这里默认有/0 隐藏的
    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 ;
}
可以看到数组arr2乱码了 因为没有\0也就是没有字符串的结束标志

 

5.2 转义字符

加入我们要在屏幕上打印一个目录地址: c:\code\test.c
我们该如何写代码?
#include <stdio.h>
int main ()
{
printf ( "c:\code\test.c\n" );
    return 0 ;
}
实际上程序运行的结果是这样的:

 

这里就需要提下转义字符(即转变字符原来的意思)
下面看一些转义字符。

 

  // 问题 1 :在屏幕上打印一个单引号 ' ,怎么做?
    // 问题 2 :在屏幕上打印一个字符串,字符串的内容是一个双引号 ,怎么做?
这里可以看到程序出错了,因为它把'''中前两个单引号看成了一对、
这个时候我们就需要用到转义字符

 #include <stdio.h>

int main ()
{  
    printf ( "%c\n" , '\'' );//%打印字符
    printf ( "%s\n" , "\"" ); //%s打印字符串
    return 0 ;
}
这样就打印出来啦 !

 

5.3 注释

1. 代码中有不需要的代码可以直接删除,也可以注释掉
2. 代码中有些代码比较难懂,可以加一下注释文字
3.一个好的程序员学会注释是很重要的。
4.我们写代码的时候难点、复杂的语句都应该注释,
这样既方便别人看懂你的代码,又方便自己看
"当我写这段代码的时候,就我和 上帝看得懂,半天之后除了上帝,没有人看得懂。"
注释有两种风格:
C 语言风格的注释 /*代码内容*/
#include<stdio.h>

/* int main()
{
    printf('\060'); 打印转义字符\060
    return 0;
}
*/ 缺陷:不能嵌套注释

C++ 风格的注释 //代码内容//
//int main()
//{   
//    printf("hello world\n"); //打印hello world 后换行
//
//    return 0;
可以注释一行也可以注释多行
注: 注释的快捷键 Ctrl + K+C (选中代码以后)
     取消注释快捷键Ctrl+K+U(选中代码以后)

结语

       感谢大家的关注与支持,可能写的不太好,摘抄的也挺多的,谢谢大家支持! 

  • 15
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值