【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);

相关内容

热门资讯

安卓系统怎么调语言设置,And... 你有没有发现,手机里的文字突然变得陌生起来?是不是觉得安卓系统的语言设置有点让人摸不着头脑?别急,今...
安卓怎么换新系统,体验全新功能 亲爱的安卓用户们,是不是觉得你的手机越来越卡,功能也越来越跟不上潮流了呢?别急,今天就来教你怎么给安...
杂牌安卓平板电脑刷系统,解锁无... 你有没有想过,那些杂牌安卓平板电脑,虽然价格亲民,但有时候系统更新慢,功能也受限?别急,今天就来教你...
塞班系统游戏移植安卓,畅享新体... 你有没有想过,那些曾经陪伴我们度过无数欢乐时光的塞班系统游戏,现在竟然可以在安卓手机上继续畅玩?没错...
安卓只有一个系统,揭秘安卓系统... 你知道吗?在手机江湖里,安卓系统可是独树一帜的存在呢!它就像一位武林高手,凭借一己之力,在众多操作系...
软件包安卓系统,软件包的奥秘与... 你有没有发现,手机里的那些应用,就像是魔法一样,让我们的生活变得如此便捷?而这背后,离不开一个强大的...
怎么卸载安卓原生系统,安卓原生... 手机用久了,是不是觉得安卓原生系统有点卡?或者是想尝试一下全新的操作系统?别急,今天就来手把手教你如...
安卓办公系统推荐知乎,知乎推荐... 你有没有想过,在手机上办公也能这么高效?现在,我就要给你安利几个安卓办公系统,让你的手机变成一个小型...
安卓版本商超收银系统,高效管理... 你有没有想过,那些每天在商超里忙碌的收银员,他们手中的安卓版本收银系统,竟然是如此神奇的存在?今天,...
旧手机刷安卓tv系统,轻松打造... 你那台旧手机是不是已经闲置在角落里了?别让它默默无闻地度过余生,今天就来教你怎么给它来个华丽转身,让...
锁屏壁纸推荐安卓系统,安卓系统... 亲爱的手机控们,你是不是也和我一样,对锁屏壁纸有着超乎寻常的热爱?每天醒来,第一眼看到的便是那块小小...
安卓系统不使用sd卡,安卓系统... 你知道吗?最近在手机圈子里,有一个话题可是引起了不小的讨论呢!那就是安卓系统的新趋势——不再使用SD...
平板系统安卓版有哪些,功能丰富... 你有没有发现,现在的生活越来越离不开平板电脑了?无论是工作还是娱乐,平板电脑都成了我们生活中不可或缺...
安卓系统呼吸灯作用,探索安卓系... 你知道吗?你的安卓手机里有个神奇的小功能,它就像你的私人小秘书,时刻关注着你的生活节奏。没错,说的就...
安卓系统的设置停止,自动生成文... 亲爱的手机控们,你是否也有过这样的经历:手机里装了各种应用,可就是觉得运行速度越来越慢,有时候甚至卡...
魅动app安卓系统,安卓系统下... 你有没有发现,最近手机上多了一个叫“魅动app”的小家伙?它可是安卓系统里的一股清流,让人爱不释手。...
安卓怎么玩电脑系统,跨平台操作... 你是不是也和我一样,对安卓系统爱得深沉,但又想体验一下电脑系统的强大呢?别急,今天就来手把手教你如何...
安卓系统买什么品牌好用,盘点几... 你最近是不是在为选择一款好用的安卓手机而烦恼呢?市面上品牌繁多,让人眼花缭乱。别急,今天我就来给你详...
安卓系统怎样不卡顿,尽享丝滑体... 手机用久了是不是感觉越来越卡?别急,今天就来跟你聊聊安卓系统怎样不卡顿,让你的手机焕发新生!一、清理...
vidaa3是安卓系统,安卓系... 你有没有听说过Vidaa3这款智能电视?它可是最近在市场上掀起了一股热潮呢!你知道吗,Vidaa3搭...