【C语言】3天速刷C语言(初识)
创始人
2024-05-30 01:33:32
0

【声明】

本篇博客只用于对与刚学习C语言的同学的一个初始了解,具体内容请继续关注本专栏后续内容。

什么是C语言

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

#include 
int main()
{printf("hello bit\n");printf("he he\n");return 0;
}
//解释:
//main函数是程序的入口
//一个工程中main函数有且仅有一个

数据类型

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

为什么出现这么的类型?

每种类型的大小是多少?

#include 
int main()
{printf("%d\n", sizeof(char));  //1printf("%d\n", sizeof(short)); //2printf("%d\n", sizeof(int));   //4printf("%d\n", sizeof(long));  //4printf("%d\n", sizeof(long long));  //8printf("%d\n", sizeof(float));      //4printf("%d\n", sizeof(double));     //8printf("%d\n", sizeof(long double));//8return 0;
}

类型的使用:

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

变量、常量

生活中的有些值是不变的(比如:圆周率,性别(?),身份证号码,血型等等)

有些值是可变的(比如:年龄,体重,薪资)。

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

定义变量的方法:

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

变量的分类

局部变量

全局变量

#include 
int global = 2019;//全局变量
int main()
{int local = 2018;//局部变量//下面定义的global会不会有问题?int global = 2020;//局部变量printf("global = %d\n", global);return 0;
}

总结:

上面的局部变量global变量的定义其实没有什么问题的!

当局部变量和全局变量同名的时候,局部变量优先使用。

变量的使用

#include 
int main()
{int num1 = 0;int num2 = 0;int sum = 0;printf("输入两个操作数:>");scanf("%d %d", &a, &b);sum = num1 + num2;printf("sum = %d\n", sum);return 0;
}
//这里介绍一下输入,输出语句
//scanf
//printf

变量的作用域和生命周期

作用域

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

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

生命周期

变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
  1. 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。

  1. 全局变量的生命周期是:整个程序的生命周期。

常量

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

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

  • 字面常量

  • const 修饰的常变量

  • #define 定义的标识符常量

  • 枚举常量

#include 
//举例
enum Sex
{MALE,FEMALE,SECRET
};
//括号中的MALE,FEMALE,SECRET是枚举常量
int main()
{3.14;//字面常量1000;//字面常量const float pai = 3.14f;   //const 修饰的常量pai = 5.14;//ok?#define MAX 100            //#define的标识符常量    return 0;
}

字符串+转义字符+注释

字符串

"hello world.\n"

这种由双引号(Double Quote)引起来的一串字符称为字符串字面值(String Literal),或者简称字 符串。

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

#include 
//下面代码,打印结果是什么?为什么?(突出'\0'的重要性)
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:\code\test.c

我们该如何写代码?

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

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

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

下面看一些转义字符:

转义字符

释义

\?

在书写连续多个问号时使用,防止他们被解析成三字母词

\'

用于表示字符常量'

\"

用于表示一个字符串内部的双引号

\\

用于表示一个反斜杠,防止它被解释为一个转义序列符。

\a

警告字符,蜂鸣

\b

退格符

\f

进纸符

\n

换行

\r

回车

\t

水平制表符

\v

垂直制表符

\ddd

ddd表示1~3个八进制的数字。 如: \130 X

\xdd

dd表示2个十六进制数字。 如: \x30 0

#include 
int main()
{//问题1:在屏幕上打印一个单引号',怎么做?//问题2:在屏幕上打印一个字符串,字符串的内容是一个双引号“,怎么做?printf("%c\n", '\'');printf("%s\n", "\"");return 0;
}

选择语句

#include 
int main()
{int coding = 0;printf("你会去敲代码吗?(选择1 or 0):>");scanf("%d", &coding);if(coding == 1){prinf("坚持,你会有好offer\n");}else{printf("放弃,回家卖红薯\n");}return 0;
}

循环语句

  • while

  • do...while

  • for

//while循环的实例
#include 
int main()
{printf("加入比特\n");int line = 0;while(line<=20000){line++;printf("我要继续努力敲代码\n");}if(line>20000)printf("赢取白富美\n");return 0;
}

函数

#include 
int main()
{int num1 = 0;int num2 = 0;int sum = 0;printf("输入两个操作数:>");scanf("%d %d", &a, &b);sum = num1 + num2;printf("sum = %d\n", sum);return 0;
}
上述代码,写成函数如下:
#include 
int Add(int x, int y)
{int z = x+y;return z;
}
int main()
{int num1 = 0;int num2 = 0;int sum = 0;printf("输入两个操作数:>");scanf("%d %d", &num1, &num2);sum = Add(num1, num2);printf("sum = %d\n", sum);return 0;
}

函数的特点就是简化代码,代码复用。

数组

要存储1-10的数字,怎么存储?

C语言中给了数组的定义:一组相同类型元素的集合

数组定义:

int ar[10]={0,1,2,3,4,5,6,7,8,9};

数组的使用

#include 
int main()
{int i = 0;int arr[10] = {1,2,3,4,5,6,7,8,9,10};for(i=0; i<10; i++){printf("%d ", arr[i]);}printf("\n");return 0;
}

操作符

算术操作符

+ - * / %

移位操作符

>> <<

位操作符

& ^ |

赋值操作符

= += -= *= /= &= ^= |= >>= <<=

单目操作符

! 逻辑反操作
- 负值
+ 正值
& 取地址
sizeof 操作数的类型长度(以字节为单位)
~ 对一个数的二进制按位取反
-- 前置、后置--
++ 前置、后置++
* 间接访问操作符(解引用操作符)
(类型) 强制类型转换

关系操作符

>
>=
<
<=
!=
==

逻辑操作符

&&
||

条件操作符

exp1 ? exp2 : exp3

逗号表达式

exp1, exp2, exp3, …expN

下标引用、函数调用和结构成员

[] () . ->

常见关键字

auto  break   case  char  const   continue  default  do   double else  enum extern float  for   goto  if   int   long  register    return   short  signed sizeof   static struct  switch  typedef union  unsigned  void  volatile  while

#define 定义常量和宏

//define定义标识符常量
#define MAX 1000
//define定义宏
#define ADD(x, y) ((x)+(y))
#include 
int main()
{int sum = ADD(2, 3);printf("sum = %d\n", sum);sum = 10*ADD(2, 3);printf("sum = %d\n", sum);return 0;
}

指针

内存:

内存是电脑上特别重要的存储器,计算机中所有程序的运行都是在内存中进行的 。所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节。为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址。

取地址:

int main()
{int num = 10;#//取出num的地址printf("%p\n", &num);//打印地址,%p--以地址的形式打印return 0;
}

指针变量定义:

int num = 10;
int *p;//p为一个整形指针变量
p = #

使用:

#include 
int main()
{int num = 10;int *p = #*p = 20;return 0;
}

指针变量大小:

#include 
int main()
{printf("%d\n", sizeof(char *));printf("%d\n", sizeof(short *));printf("%d\n", sizeof(int *));printf("%d\n", sizeof(double *));return 0;
}//32位平台4字节,64位平台8字节

结构体

结构体是C语言中特别重要的知识点,结构体使得C语言有能力描述复杂类型。

比如描述学生,学生包含: 名字+年龄+性别+学号 这几项信息。

这里只能使用结构体来描述了。

例如:

struct Stu
{char name[20];//名字int age;      //年龄char sex[5];  //性别char id[15]; //学号
};

结构体的初始化:

struct Stu s = {"张三", 20, "男", "20180101"};
//.为结构成员访问操作符
printf("name = %s age = %d sex = %s id = %s\n", s.name, s.age, s.sex, s.id);
//->操作符
struct Stu *ps = &s;
printf("name = %s age = %d sex = %s id = %s\n", ps->name, ps->age, ps->sex, ps-
>id);

相关内容

热门资讯

安卓系统的移动加密软件,安全守... 你知道吗?在这个信息爆炸的时代,保护个人隐私变得尤为重要。而手机,作为我们日常生活中不可或缺的伙伴,...
最低安卓系统淘汰时间,揭秘最低... 你知道吗?在科技飞速发展的今天,手机更新换代的速度简直就像坐上了火箭!这不,最近有个话题在数码圈里炒...
安卓系统什么框架好用,探索最佳... 你有没有想过,你的安卓手机里那些应用,是怎么运行得那么顺畅的呢?其实,这背后可是有“大功臣”的——那...
平板安卓系统和ios,安卓与i... 你有没有发现,现在身边的朋友几乎人手一台平板电脑呢?无论是追剧、办公还是游戏,平板电脑都成了我们生活...
安卓的定位系统叫什么,GPS导... 你有没有想过,你的手机是怎么知道你在哪儿的呢?是不是觉得这事儿很神奇?其实,这背后有一个强大的技术支...
老式电视安卓系统升级,解锁智能... 你有没有发现,家里的老式电视突然变得聪明起来啦?没错,就是那个陪伴我们多年的老伙伴,它竟然悄悄地升级...
长安车载系统升级安卓 你有没有发现,最近你的长安车好像变得聪明多了?没错,就是那个车载系统,它悄悄地进行了安卓升级,简直就...
安卓系统损坏标志图,故障原因与... 手机突然间闹起了脾气,屏幕上那个安卓系统损坏的标志图,简直就像是个不速之客,突然闯进了你的生活。别急...
安卓系统自带投屏,轻松实现多屏... 你是不是也和我一样,有时候想把自己的手机屏幕上的内容分享给朋友或者家人看,但又觉得用数据线连接太麻烦...
mac可以下安卓系统么 亲爱的果粉们,你是否曾有过这样的疑问:Mac可以下安卓系统吗?这个问题,不仅让你我好奇,也让不少科技...
diy主机安卓系统推荐 亲爱的DIY爱好者们,你是否曾梦想过拥有一台完全由自己组装的安卓主机?想象一台运行流畅、功能强大的安...
安卓13系统可以安装吗 你有没有听说安卓13系统已经发布了?是不是迫不及待想要升级你的手机,体验一下新系统的魅力呢?不过,在...
手机壳平价推荐安卓系统,时尚与... 手机壳可是咱们手机的最佳守护者呢!想象你的宝贝手机在日常生活中难免会遭遇各种“小意外”,有了手机壳,...
麦芒是安卓系统吗,深度解析安卓... 你有没有想过,手机里的那个麦芒,它是不是安卓系统呢?这个问题,估计不少手机控都好奇过吧!今天,就让我...
苹果x系统感觉像安卓,安卓风潮... 你有没有发现,最近苹果的X系统好像有点儿像安卓呢?是不是觉得苹果的“高贵”形象突然变得有点儿接地气了...
小米的安卓系统设置在哪,轻松生... 你有没有发现,小米手机的操作界面简洁又美观,功能强大到让人爱不释手?但是,有时候你可能会觉得,这个设...
安卓系统荣耀排第一,引领智能手... 你知道吗?在智能手机的世界里,有一个系统可是风头无两,那就是安卓系统!而在这众多安卓手机品牌中,有一...
充电宝带安卓系统,便携式智能电... 你有没有想过,你的充电宝也能拥有自己的操作系统呢?没错,就是安卓系统!听起来是不是很酷?想象你的充电...
安卓类原生系统手机推荐,精选原... 你有没有想过,拥有一部安卓类原生系统手机,就像是拥有了掌控自己世界的魔法棒?没错,原生系统带来的流畅...
努比亚安卓13系统下载,下载与... 你有没有听说?努比亚手机最近可是大动作连连呢!他们推出了全新的安卓13系统,而且现在就可以下载啦!是...