![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言基础
怪蛙
欢迎关注微信公众号:编程外星人
展开
-
C语言基础:标准输入与输出
在前面内容中我们已经知道了使用printf函数来在标准输出设备上显示一些内容,接下来我们要学习一些其它的输入输出函数,让我们的程序可以通过标准输入设备(键盘)取得用户的输入内容,并在标准输出设备(显示器)上显示出来。 一、putchar和getchar 这两个函数是对单个字符进行处理,putchar是在标准输出设备上显示一个字符,而getchar是在标准...原创 2018-02-27 15:09:33 · 6560 阅读 · 4 评论 -
C语言基础:字符数组与字符串
在本节中我们来学习关于字符数组和字符串的相关知识。我们知道定义一个数组时需要为其指定相应的变量类型。也就是说,定义了数组的类型之后这个数组中的所有变量就都是相同的类型。现在我们就来定义一个字符弄型的数组,如下:char hello[5] = {'H','e','l','l','o'}; 这样我们就定义了一个字符型的数组,对于数组型的变量这样定义是没有问题的,但有两个方...原创 2018-04-08 08:52:09 · 981 阅读 · 1 评论 -
C语言基础:多维数组
今天我们来学习数组的另一种用高级用法,多维数组。多维数组的定义与使用与数学定义一致,它可以表示多维的数值。 一、二维数组 例如我们先来定义一个二维数组int array[3][4] ={ { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } }; 我们可以像上面例子一样在数组定义时为其指定...原创 2018-04-08 08:54:14 · 1326 阅读 · 0 评论 -
C语言基础:地址与指针
从这一节开始我们要学习C语言中最重要的一个机制——指针。指针是C语言的灵魂。想要学好指针,我们就要先从内存地址学起。一、内存地址 内存,实际上一可以存放很多字节数据的一个内部存储器。每一个存储单元为8个bit位,也就是一个字节byte,简写为B。这样多个存储单元线性的排列在一起,就构成了一定大小的存储空间。1024个字节为1KB,1024KB为1MB,而1024MB...原创 2018-04-08 08:55:25 · 1296 阅读 · 0 评论 -
C语言基础:多文件编译
多文件编译,在我们最早编写Hello World程序时我们就将程序写在了一个后缀名为.c的文本文件里,然后通过gcc编译器对其编译并运行。在本节我们将学习如何编写多个源文件的程序一、头文件header与源文件source 通常我们会在头文件中一些类型的定义、结构体定义、宏定义、函数声明、include包含等内容。而在源文件中编写实际的功能实现。 例如我...原创 2018-03-31 07:48:32 · 35746 阅读 · 11 评论 -
C语言基础:函数的声明与定义
在这一章中我们来学习一下关于函数的定义与使用。关于函数的概念我们可以这样理解,函数是一个功能的集合,它可以根据输入完成特写的功能,并将结果输出。当然有时候函数只是为了实现一些特写功能而并不一定要有输入或输入。我们想要自己编写一个函数需要编写两部分内容:声明和定义。函数的声明就是告诉编译器我们想要定义一个函数,并明确规定其返回值(输出)、函数名、参数表(输入)。声明函数的语法如下:...原创 2018-03-26 11:20:24 · 17424 阅读 · 2 评论 -
C语言基础:变量的作用域
在这一节中我们来学习一下关于变量的作用域。在前面的课程中我们已经知道如何定义变量,并对其赋值和计算,但并没有对其作用域做额外的说明。其实,我们定义的变量并不会一直有效,它只会在其作用域内有效,并在其作用域外失效。一、局部变量 我们最先是在main函数内部定义了一些变量并使用它们,例如:int main(int argc, char *argv[]){ int ...原创 2018-04-01 15:11:54 · 14979 阅读 · 0 评论 -
C语言基础:函数参数与返回值
在本节中我们来详细讲述一下函数的参数表与返回值。在定义一个函数时我们就需要确定这个函数的参数表及返回值。 一、参数表 参数表就是我们在调用这个函数时对它的输入内容,通过对函数的输入,使得函数在不同输入的情况下有着不同的输出,也就是返回值。例如我们定义一个用于计算两个变量之和的函数:int plus(int a, int b){ return a +...原创 2018-03-27 09:00:54 · 7581 阅读 · 2 评论 -
C语言基础:指针与数组
一、指针与数组的关系 其实,指针与数组变量并没有本质的区别,指针变量就是数组变量,而数组变量也是指针变量。为什么这么说呢?我们来看看面代码,定义一个数组array和一个指向这个数组首元素的地址的指针p,还有将数组变量直接赋值给了一个指针变量p1:int array[4] = { 0, 1, 2, 3 };int *p = &array[0];int *p1...原创 2018-04-14 16:41:16 · 536 阅读 · 0 评论 -
C语言基础:简单数组
本节我们将一起来学习关于数组相关的知识。在第一章中我们已经简单的学习过定义数组和使用数组,在本章我们将学习数组的详细内容,并与数组结合学习指针的概念与应用。 我们首先来看一看数组的定义,看下面例子其中其实定义数组与定义普通型变量没有什么区别定义一个变量时只是将这个变量只是向系统申请了一个变量,而定义数组则是相当于向系统申请了多个连续 变量,例如:short array[...原创 2018-04-05 08:08:55 · 543 阅读 · 0 评论 -
C语言基础:指针数组与数组指针
一、指针数组 在这一节中我们来学习一个数组,这个数组比较特殊,也比较普通。说它特殊是因为这个数组是指针的数组,也就是说我们有一个数组,这个数组里存放的变量类型是指针型变量;说它普通是因为数组变量其实与其它普通变量没有什么区别,指针变量就是一种可以存放内存地址的变量,所以它们也可以被定义成一串连续的变量集合,这个集合就是指针数组。例如,我们可以定义一组变量,这组变量就是...原创 2018-04-18 08:40:06 · 1738 阅读 · 2 评论 -
C语言基础:通用指针
一、通用指针 通用指针变量用void *来修饰。顾名思义,通用指针可以用来存放任意型的内存地址,char、short、int、float、double等这些类型的地址都可以使用void *型变量来存放。同样char *、short *、int *、float *、double *等指针变量均可以赋值给void *型变量。例如:#include <stdio.h>#inc...原创 2018-05-18 09:47:49 · 3731 阅读 · 1 评论 -
C语言基础:指针做参数
先来思考这样一个问题如果有两个变量需要互换其值,应该如何处理?答案非常简单:#include <stdio.h>int main(int argc, char **args){ int i = 3; int j = 5; int t; t = i; i = j; j ...原创 2018-04-27 13:44:28 · 547 阅读 · 0 评论 -
C语言基础:函数指针
在前面章节中我们学习了如何定义并使用一种特殊型变量——指针。其实指针也是一种普通变量,只不过它们存放的值表示的是其它变量的内存地址。在本节我们要学习指针的另一种用法,存放函数的内存地址。例如:#include <stdio.h>void myfunc(void){ printf("my function.\n");}int main(int argc, cha...原创 2018-05-07 13:36:00 · 432 阅读 · 0 评论 -
C语言基础:不定参数
在这一节里我们来学习C语言中另外一个重要的机制,不定参数。不定参数是指函数可以接收不确定个数的参数,不定参数用...来表示,它必须要写在正常参数表的后面,例如我们熟知的printf函数:int printf (char *fmt, ...); printf的第一个参数为char* fmt,后面则是不定参数。它表示可以接收任意个数的参数。我们在调用这样的函数时可以向其传...原创 2018-03-30 06:57:57 · 2819 阅读 · 0 评论 -
C语言基础:goto语句
在本节中我们来学习一个比较有争议的语句goto,goto语句可以使程序在没有任何条件的情况下跳转到指定的位置,所以goto语句又被称为是无条件跳转语句。它的语法如下goto label;//其它代码label: 其中,label为我们自己定义的一个标签,定义的规则与变量的命名相同,它的位置是不固定的,它可以写在goto语句的后面,也可以写在它的前面,然而goto语句...原创 2018-03-19 10:20:21 · 3944 阅读 · 0 评论 -
C语言基础:运算符优先级
在本节中,我们来一起学习操作符的优先级,并且需要了解在相同优先级下的操作符的结合性。我们先来看一下操作符优先级和结合性的表格:级别(由高到低)操作符(使用空格分隔)结合性1() [] -> .由左向右2! ~ ++ -- + - * (type) sizeof由右向左3* / %由左向右4+ -由左向右5<< >>由左向右6< <= >...原创 2018-03-05 14:40:50 · 681 阅读 · 2 评论 -
C语言基础:while与do while
在第一章中我们已经简单学习了关于使用while语句来实现循环的操作,现在我们来详细讲述关于while语句的循环方式和do while语句的循环方式。一、whlie循环 while循环语句是C语言中最基本的循环方式,它的语法结构如下:while (条件表达){ //循环体} while是C语言的一个关键字,其后是使用一个小括号中的条件表达式来...原创 2018-03-14 19:13:30 · 42032 阅读 · 12 评论 -
C语言基础:最简单的程序
基本功无论在什么领域内都有着不容忽视的地位,想要学好编程,并将程序运动到实际当中去一定要学好基础,学好C语言基础,打下扎实的编程基本功,我们将带你走进编程的世界。 我是先完成的《C语言深处》再写的《C语言基础》。很多朋友看过了《C语言深处》后向我反映:直接看这个系列觉得很难,不好理解。并希望我能编写一个关于C语言编程基础的系列文章。所以我后来才再写的《C语言基础》,这...原创 2018-02-20 07:52:15 · 36435 阅读 · 0 评论 -
C语言基础:顺序语句
一、顺序执行语句 我们知道计算机执行程序指令是按顺序的方式执行的,也就是说,按照指定的顺序,一条指令一条指令的执行,执行完一条指定之后,再执行下一条指令。当然现在很多CPU都是多核心、多线程的,并发执行多条指令,但对于同一个程序而言,CPU还是通过顺序的方式来执行指令的。 在C语言中程序执行时是按语句来顺序执行的,其中每一条语句都以分号结尾。例如: in...原创 2018-03-08 17:15:17 · 6007 阅读 · 0 评论 -
C语言基础:变量与表达式
接下来我们来编写一个显示当前月份的每一天的程序,然后通过对此程序代码进行说明,让大家对变量和算数表达式有一定的了解: #include <stdio.h> //包含标准输入输出头文件 /* 这是一个显示一月份 ...原创 2018-02-20 15:44:44 · 2406 阅读 · 0 评论 -
C语言基础:数组与字符串
一、数组变量 在上一节中我们学习了如何定义变量,例如定义一月的最多天数为31,则定义int max = 31;即可。但是如果我们有很多个变量需要定义,例如从一月到十二月的最大天数不尽相同,我们就需要定义12个变量,用于存放这些数值。在C语言中提供了一个方便定义同类型多个变量的方式,叫做数组。我们来看一下定义数组的代码: int days[12] = {31, 28, ...原创 2018-02-21 09:16:43 · 473 阅读 · 1 评论 -
C语言基础:关键字符号与变量
一、关键字与符号:1.关键字auto double int long break else long switchcase enum register typedef char extern return unionconst float short unsigned continue ...原创 2018-03-01 13:09:54 · 1902 阅读 · 0 评论 -
C语言基础:枚举与类型定义
一、枚举类型 枚举类型是C语言中的一种特殊类型,枚举类型可以让我们的程序使用一些固定长度和固定数值的变量值范围。定义枚举类型使用如下方式:enum 枚举类型 {枚举值列表}; 例如,我们可以定义一个枚举类型的值范围是周日至周五的星期类型,或一月至十二月的月份类型:enum week{ Su, Mo, Tu, We, Th, Fr, Sa};en...原创 2018-03-02 14:47:20 · 15948 阅读 · 0 评论 -
C语言基础:函数的定义与调用
在前面内容中我们调用了一个标准C的库函数,叫printf,那么如果我们想自己定义函数应该如何来编写程序呢?定义函数又有什么好处呢?因为我们在教材中提及到的例子主要目的是为了让读者对程序的原理有一定的了解,所以设定的例子程序通常都比较简单,基本上在几行到十几行,多一点的也就三五十行代而已,但是在真正的编程工作中,我们需要完成的代码将非常大,所以将代码合理的分为不同的区块是很有必要的,...原创 2018-02-21 09:20:18 · 114564 阅读 · 22 评论 -
C语言基础:for语句
一、for循环语句 在本节中我们来一起学习另一种循环方式,它叫for语句。for语句的语法如下:for (初始语句; 条件表达式; 每次循环后执行语句){ printf("%d\n", day);} 在for语句中后的小括号中一共有三部分内容,每个部分用分号;隔开。第一部分为初始化语句,当程序执行for语句时首先执行此语句,并且只执行一次,与条件表达式是否成...原创 2018-03-17 08:36:12 · 1283 阅读 · 0 评论 -
C语言基础:运算符和表达式
一、算数运算符和算数表达式 基本的算数运算符包括加减乘除四则运算符和求余运算符:+:加法运算符,双目运算符,双目运算符表示在符号的两侧有两个变量参与此运算。例如:a+b,a+3,4+6等。加法运算符具有右结合性。-:减法运算符,双目运算符。同时它可以作为“负号”做为变量的负值运算的左结合性运算符。作为负运算符时为单目运算符,并具有左结合性。*:乘法运算符,双目运算符,具有左结合性。/...原创 2018-03-04 21:19:48 · 707 阅读 · 0 评论 -
C语言基础:if语句
一、if语句 在操作符章节中我们学习过问号表达式,也就是当某一个条件表达式是真时,问号表达式的结果为冒号前的结果,当条件表达式是假时,问号表达式的结果为冒号后的结果。这里我们可以分析一下,问号表达式其实是一个条件判断功能表达式,也就是说:如果条件表达式的值为真: 那么结果为A;否则: 那么结果为B。 其实这是一个我们在生活常常需要处理的一种情...原创 2018-03-12 10:44:16 · 15105 阅读 · 2 评论 -
C语言基础:switch语句
switch语句可以算是if else语句的一种特殊情况。当我们使用if else语句来做判断时,如果我们只想对条件表达式的结果做一些特定值的判断,那么就可以使用switch语句。例如:我们需要根据当前月份来判断这个月份应该有多少天,我们可以使用if else语句来处理这个问题,但同样也可以使用switch语句来处理。switch语句的使用方式如下: switch (变量或表达式)...原创 2018-03-12 10:45:19 · 1090 阅读 · 1 评论 -
C语言基础:break与continue
一、跳出循环语句:break 在前面我们已经学习了关于循环程序的几种写法:while、do while、for等语句,我们知道,这些循环语句都有着一个特点,就是在每次循环时都要去检查循环的条件表达式是否成立,如果成立则继续循环,如果不成立则停止循环。但是在很多实际情况中我们需要程序在循环条件还成立的情况下就结束循环,对于这种情况C语言提供了一个关键字叫作break专门用于这种情况,...原创 2018-03-18 14:01:01 · 510 阅读 · 0 评论 -
C语言基础:多级指针
一、多级指针原理指针的本质就是一个普通变量,它的值表示的是一个内存地址,这个地址中可能存放了其它变量。那么二级指针其实也是一个普通的变量,这个变量中同样也存放了一个内存地址,而这个内存地址是一个指针变量的地址。例如:int a = 0;int b = 1;int *p = &a;int **p2 = &p;a是一个普通变量,而p是一个指针变量,它存放了a的地址,而p2是一个二...原创 2018-06-17 10:00:17 · 4327 阅读 · 1 评论