C语言
五花肉村长
流水不争先,争的是滔滔不绝。
展开
-
认识C语言-库函数
为了不再重复实现常⻅的代码,让程序员提升开发效率,C语⾔标准规定了⼀组函数,这些函数再由不 同的编译器⼚商根据标准进⾏实现,提供给程序员使⽤。⼀个系列的库函数⼀般会声明在同⼀个头⽂件中,所以库函数的使⽤,要包含对应的头⽂件。这⾥简单的介绍⼀下 printf , printf 是⼀个库函数,它的功能是在标准输出设备(⼀般指屏 幕)上进⾏信息的打印。库函数的时候,是需要包含头⽂件的,⽐如: printf 函数需要包含的就是 stdio.h 这个头⽂件, 具体的⽅法就是:#include原创 2024-04-04 20:35:09 · 466 阅读 · 0 评论 -
认识C语言-基础知识
在键盘上可以敲出各种字符,如:a,q,@,#等,这些符号都被称为字符,C语⾔中字符是⽤单引号 括起来的,如:'a','b','@'。这就是转义字符的问题, \n 是⼀个转义字符表⽰换⾏的意思,我们可以简单的理解为 \ 让 n 的意思 发⽣了转变, n 本来是⼀个普通的字符,被 \ 转义为换⾏的意思。其实在字符中有⼀组特殊的字符是转义字符,转义 字符顾名思义:转变原来的意思的字符。C语⾔字符串中⼀个特殊的知识,就是在字符串的末尾隐藏放着⼀个 \0 字符,这个 \0 字符是字符串 的结束标志。原创 2024-04-04 20:44:13 · 344 阅读 · 0 评论 -
认识C语言-语句和注释
写注释⼀定程度上反应了程序作者的素质,建议⼤家写必要的注释,在未来找⼯作的时候,写代码时 留下必要的注释也会给⾯试官留下更好的印象。i++) //for循环的循环体的⼤括号中的就是复合语句 { arr[i] = 10-i;void print(int arr[], int sz) //函数的⼤括号中的代码也构成复合语句 {int i = 0;控制语句⽤于控制程序的执⾏流程,以实现程序的各种结构⽅式(C语⾔⽀持三种结构:顺序结构、选 择结构、循环结构),它们由特定的语句定义符组成,C语⾔有九种控制语句。原创 2024-04-06 20:45:27 · 455 阅读 · 0 评论 -
认识C语言-数据类型和变量
其实每⼀种数据类型有⾃⼰的取值范围,也就是存储的数值的最⼤值和最⼩值的区间,有了丰富的类 型,我们就可以在适当的场景下去选择适合的类型。变量在创建的时候就给⼀个初始值,就叫初始化。sizeof 在代码进⾏编译的时候,就根据表达式的类型确定了,类型的常⽤,⽽表达式的执⾏却要在 程序运⾏期间才能执⾏,在编译期间已经将sizeof处理掉了,所以在运⾏期间就不会执⾏表达式了。各种数据类型的⻓度,每⼀种数据类型都有⾃⼰的⻓度,使⽤不同的数据类型,能够创建出⻓度不同的变量,变量⻓度的不 同,存储的数据范围就有所差异。原创 2024-04-07 11:02:08 · 582 阅读 · 0 评论 -
认识C语言-算术操作符
/--的操作数是a,是放在a的后⾯的,就是后置-- printf("a=%d b=%d\n",a , b);//--的操作数是a,是放在a的前⾯的,就是前置-- printf("a=%d b=%d\n",a , b);+ 和 - 都是有2个操作数的,位于操作符两端的就是它们的操作数,这种操作符也叫双⽬操作符。++是⼀种⾃增的操作符,⼜分为前置++和后置++,--是⼀种⾃减的操作符,也分为前置--和后置--.除号的两端如果是整数,执⾏的是整数除法,得到的结果也是整数。//赋值,这⾥使⽤的就是赋值操作符。原创 2024-04-10 20:30:16 · 490 阅读 · 0 评论 -
认识C语言-printf
占位符的第⼀个字符⼀律为百分号 % ,第⼆个字符表⽰占位符的类型, %d 表⽰这 ⾥代⼊的值必须是⼀个整数。上⾯⽰例中,输出⽂本 %s says it is %d o'clock 有两个占位符,第⼀个是字符串占位 符 %s ,第⼆个是整数占位符 %d ,分别对应 printf() 的第⼆个参数( lisi )和第三个参数 ( 21 )。如果不满5位,对应的值的前⾯会添加空格。上⾯⽰例中, %s 表⽰代⼊的是⼀个字符串,所以 printf() 的第⼆个参数就必须是字符串,这个例 ⼦是 zhangsan。原创 2024-04-10 20:40:42 · 359 阅读 · 0 评论 -
认识C语言-scanf
为了防⽌这种情况,使⽤ %s 占位符时,应该指定 读⼊字符串的最⻓⻓度,即写成 %[m]s ,其中的 [m] 是⼀个整数,表⽰读取字符串的最⼤⻓度,后 ⾯的字符将被丢弃。它的第⼀个参数是⼀个格式字符串,⾥⾯会放置占位符(与 printf() 的占位符基本⼀致),告诉编 译器如何解读⽤⼾的输⼊,需要提取的数据是什么类型。上⾯⽰例中, name 是⼀个⻓度为11的字符数组, scanf() 的占位符 %10s 表⽰最多读取⽤⼾输⼊ 的10个字符,后⾯的字符将被丢弃,这样就不会有数组溢出的⻛险了。原创 2024-04-10 20:50:09 · 270 阅读 · 0 评论 -
认识C语言 8
| 就是或运算符,也就是或者的意思, || 也是⼀个双⽬操作符,使⽤的⽅式是 a || b , || 两边的表达式只要有⼀个是真,整个表达式就是真,两边的表达式都为假的时候,才为假。&& 就是与运算符,也是并且的意思, && 是⼀个双⽬操作符,使⽤的⽅式是 a&&b , && 两边的表达 式都是真的时候,整个表达式才为真,只要有⼀个是假,则整个表达式为假。如果 flag 为真,!在C语⾔中,0为假,⾮0表⽰真,也就是表达式的结果如果是0,则语句不执⾏,表达式的结果如果是 不是0,则语句执⾏。原创 2024-04-13 11:05:33 · 401 阅读 · 0 评论 -
认识C语言9
题⽬解析 1. 要想得到n的最低位,可以使⽤n%10的运算,得到的余数就是最低位,如:1234%10得到4 2. 要想去掉n的最低位,找出倒数第⼆位,则使⽤ n=n/10 操作就可以去掉最低位的,如: n=1234/10得到123,123相较于1234就去掉了最低位,123%10就得到倒数第⼆位3。//当i等于5后,就执⾏continue,直接跳过continue的代码,去循环的判断的地⽅ //因为这⾥跳过了i = i+1,所以i⼀直为5,程序陷⼊和死循环 printf("%d ", i);原创 2024-04-15 20:50:06 · 449 阅读 · 0 评论 -
认识C语言10
如果再深⼊了解⼀下,我们就不难发现,其实rand函数⽣成的随机数是伪随机的,伪随机数不是真正 的随机数,是通过某种算法⽣成的随机数。程序中在调⽤rand函数之前先调⽤srand函数,通过srand函数的参数seed来设置rand函数⽣成随 机数的时候的种⼦,只要种⼦在变化,每次⽣成的随机数序列也就变化起来了。rand函数会返回⼀个伪随机数,这个随机数的范围是在0~RAND_MAX之间,这个RAND_MAX的⼤⼩是 依赖编译器上实现的,但是⼤部分编译器上是32767。原创 2024-04-16 21:24:12 · 574 阅读 · 0 评论 -
第二章 自己初识C语言
C语言程序都是从main函数开始的,也是程序的入口,也被称为主函数。main函数前的in是主函数返回的类型(整型) ,main函数要在最后return 0来前后呼应,main函数有且只有一个。人和计算机进行交流的语言就叫计算机语言,人们是通过计算机语言来编写程序,给计算机下达指令,来让计算机工作的,C语言就是其中一种计算机语言。原创 2024-03-27 23:50:39 · 301 阅读 · 0 评论 -
认识C语言-数组
有了下标访问操作符,我们就可以轻松的访问到数组的元素了,⽐如我们访问下标为7的元素,我们就 可以使⽤ arr[7] ,想要访问下标是3的元素,就可以使⽤ arr[3]。前⾯学习的数组被称为⼀维数组,数组的元素都是内置类型的,如果我们把⼀维数组做为数组的元 素,这时候就是⼆维数组,⼆维数组作为数组元素的数组被称为三维数组,⼆维数组以上的数组统称 为多维数组。C语⾔规定数组是有下标的,下标是从0开始的,假设数组有n个元素,最后⼀个元素的下标是n-1,下 标就相当于数组元素的编号。数组是⼀组相同类型元素的集合;原创 2024-04-26 20:05:39 · 939 阅读 · 2 评论 -
认识认识函数
其实⾃定义函数和库函数是⼀样的,形式如下:ret_type fun_name(形式参数) { }• ret_type 是函数返回类型• fun_name 是函数名• 括号中放的是形式参数• {}括起来的是函数体⼀般我们在使⽤函数的时候,直接将函数写出来就使⽤了。像上述判断闰年的函数定义和函数的调用,定义声明一般要在调用之前。就是函数调⽤之前先声明⼀下is_leap_year这个函数,声明函数只要交代清 楚:函数名,函数的返回类型和函数的参数。原创 2024-05-12 20:06:53 · 1392 阅读 · 0 评论 -
VS调用技术
当我们发现程序中存在的问题的时候,那下⼀步就是找到问题,并修复问题。这个找问题的过程叫称为调试,英⽂叫debug(消灭bug)的意思。原创 2024-05-13 20:19:00 · 525 阅读 · 0 评论 -
函数的递归
递归其实是⼀种解决问题的⽅法,在C语⾔中,递归就是函数⾃⼰调⽤⾃⼰。原创 2024-05-14 20:52:51 · 618 阅读 · 0 评论 -
介绍一操作符
• 算术操作符: + 、- 、* 、/ 、%• 移位操作符:>• 位操作符:& | ^ `• 赋值操作符:= 、+= 、 -= 、 *= 、 /= 、%= 、、>>= 、&= 、|= 、^=• 单⽬操作符:!、++、--、&、*、+、-、~ 、sizeof、(类型)• 关系操作符:> 、>= 、< 、、 == 、!• 逻辑操作符: && 、||• 条件操作符:?• 逗号表达式: ,• 下标引⽤: []• 函数调⽤: ()• 结构成员访问: . 、->原创 2024-05-16 20:54:59 · 975 阅读 · 0 评论 -
初识指针(1)
把内存划分为⼀个个的内存单元,每个内存单元的⼤⼩取1个字节。计算机中常⻅的单位(补充): ⼀个⽐特位可以存储⼀个2进制的位1或者0。其中,每个内存单元,相当于⼀个学⽣宿舍,⼀ 个⼈字节空间⾥⾯能放8个⽐特位,就好⽐同学们 住的⼋⼈间,每个⼈是⼀个⽐特位。每个内存单元也都有⼀个编号(这个编号就相当 于宿舍房间的⻔牌号),有了这个内存单元的编 号,CPU就可以快速找到⼀个内存空间。⽣活中我们把⻔牌号也叫地址,在计算机中我们 把内存单元的编号也称为地址。C语⾔中给地址起 了新的名字叫:指针。原创 2024-05-24 10:40:50 · 1133 阅读 · 0 评论 -
认识认识指针(2)
数组名和数组⾸元素的地址打印出的结果⼀模⼀样,数组名就是数组⾸元素(第⼀个元素)的地址。其实数组名就是数组⾸元素(第⼀个元素)的地址是对的,但是有两个例外:• sizeof(数组名),sizeof中单独放数组名,这⾥的数组名表⽰整个数组,计算的是整个数组的⼤⼩, 单位是字节• &数组名,这⾥的数组名表⽰整个数组,取出的是整个数组的地址(整个数组的地址和数组⾸元素 的地址是有区别的) 除此之外,任何地⽅使⽤数组名,数组名都表⽰⾸元素的地址。原创 2024-05-25 19:56:00 · 794 阅读 · 0 评论 -
认识认识指针(3)
在指针的类型中我们知道有⼀种指针类型为字符指针 char*;*pc = 'w';return 0;return 0;这⾥str3和str4指向的是⼀个同⼀个常量字符串。C/C++会把常量字符串存储到单独的⼀个内存区域, 当⼏个指针指向同⼀个字符串的时候,他们实际会指向同⼀块内存。但是⽤相同的常量字符串去初始 化不同的数组的时候就会开辟出不同的内存块。所以str1和str2不同,str3和str4相同。原创 2024-05-25 21:34:15 · 881 阅读 · 0 评论 -
认识认识指针(4)
回调函数就是⼀个通过函数指针调⽤的函数。如果你把函数的指针(地址)作为参数传递给另⼀个函数,当这个指针被⽤来调⽤其所指向的函数 时,被调⽤的函数就是回调函数。回调函数不是由该函数的实现⽅直接调⽤,⽽是在特定的事件或条 件发⽣时由另外的⼀⽅调⽤的,⽤于对该事件或条件进⾏响应。调⽤函数的逻辑是有差异的,我们可以把调⽤的函数的地址以参数的形式 传递过去,使⽤函数指针接收,函数指针指向什么函数就调⽤什么函数,这⾥其实使⽤的就是回调函 数的功能。原创 2024-05-26 20:56:04 · 838 阅读 · 0 评论 -
认识认识指针(5)
sizeof和strlen的对⽐,数组名的意义。原创 2024-05-27 13:52:33 · 486 阅读 · 0 评论 -
看看字符函数
在编程的过程中,我们经常要处理字符和字符串,为了⽅便操作字符和字符串,C语⾔标准库中提供了 ⼀系列库函数,接下来我们就学习⼀下这些函数。原创 2024-06-07 20:00:30 · 424 阅读 · 0 评论 -
函数的使用和模拟实现
• 字符串以 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前⾯出现的字符个数(不包 含 '\0' )。• 参数指向的字符串必须要以 '\0' 结束。• 注意函数的返回值为size_t,是⽆符号的( 易错 )• strlen的使⽤需要包含头⽂件 • 学会strlen函数的模拟实现strlen的模拟实现://计数器⽅式⽅式1:str++;⽅式2://不能创建临时变量计数器⽅式3://指针-指针的⽅式while(*p!return p-s;原创 2024-06-18 20:16:12 · 908 阅读 · 0 评论 -
C语言的内存函数
• 函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。• 这个函数在遇到 '\0' 的时候并不会停下来。• 如果source和destination有任何的重叠,复制的结果都是未定义的。int i = 0;for (i = 0;i < 10;} return 0;对于重叠的内存,交给memmove来处理。memcpy函数的模拟实现:/**/原创 2024-06-22 21:20:16 · 1140 阅读 · 0 评论