C语言
文章平均质量分 89
Mr.GaoMq
一个学编程的小白
展开
-
C语言深入理解指针(五)
s作为短整型是占用两个字节,而i是整形则占4个字节,在int n=sizeof(s=i+4)中,很多人会认为i+4会赋值给s,但是我们要注意。strlen 是C语言库函数,功能是求字符串长度。使用回调函数,模拟实现qsort(采用冒泡的方式)在学习操作符的时候,我们学习了 sizeof ,对于n为什么是等于10,原创 2024-09-24 12:46:10 · 1409 阅读 · 0 评论 -
C语言深入理解指针(四)
显然这几个都是函数,第一个和第三个都为函数指针,第二个b为void返回类型的函数,然后a的参数包含了int 和void,返回类型为signal。* || p [10]我们把指针数组分开,一个是指针*,一个是数组p[10],表示数组p[10]里面存放的是指针。typedef是用来类型重命名的,可以将复杂的类型,简单化,也可以理解为设置一个代号,方便理解并且减少代码的长度。如果是指针类型,能否重命名呢?我们发现这二者的差别就在于括号,指针数组是没有括号的,而数组指针是有括号的,我们可以这样理解。原创 2024-09-22 11:22:06 · 1819 阅读 · 0 评论 -
C语言深入理解指针(三)
这个代码搞明白后,我们再试⼀下,如果我们再分析⼀下,数组名arr是数组首元素的地址,可以赋值给p,其实数组名arr和p在这里是等价的。我们可以看到&arr[0]和arr+1后与原来的地址相比较相差4个字节,而&arr+1后相差40个字节,刚好是整个数组元素的大小,因此我们可以推断,取整个元素地址时我们+1是移动整个数组的大小.我们类比一下,整型数组,是存放整型的数组,字符数组是存放字符的数组。• &数组名,这里的数组名表示整个数组,取出的是整个数组的地址(整个数组的地址和数组首元素。原创 2024-09-20 18:10:28 · 1488 阅读 · 0 评论 -
C语言深入理解指针(二)
⼀般我们可以在debug中使用,在release版本中选择禁用assert就行,在VS这样的集成开发环境中,在release版本中,直接就是优化掉了。assert() 的使用对程序员是非常友好的,使用 assert() 有几个好处:它不仅能自动标识文件和出问题的行号,还有⼀种无需更改代码就能开启或关闭 assert() 的机制。如果该表达式为假(返回值为零),assert() 就会报错,在标准错误流 stderr 中写入⼀条错误信息,显示没有通过的表达式,以及包含这个表达式的文件名和行号。原创 2024-09-18 12:53:11 · 1572 阅读 · 1 评论 -
C语言深入理解指针(一)
上述代码中n是不能被修改的,其实n本质是变量,只不过被const修饰后,在语法上加了限制,只要我们在代码中对n就行修改,就不符合语法规则,就报错,致使没法直接修改n。就是为了不能被修改,如果p拿到n的地址就能修改n,这样就打破了const的限制,这是不合理的,所以应该让p拿到n的地址也不能修改n。我们可以看出打印的a值和b值不同,原因在于我们传的方式不同,一个传入了地址,一个没有传入,没有传入地址的b即使在函数中被修改,出了函数也无法保留修改的值,而传入地址的a,被修改后是可以保留的。原创 2024-09-16 19:24:40 · 1634 阅读 · 9 评论 -
C语言扫雷解析
扫雷的过程中,布置的雷和排查出的雷的信息都需要存储,所以我们需要⼀定的数据结构来存储这些信息,因此我们需要一个数组,由于我们是设计的9* 9的棋盘,所以首先我们会想到char类型的二维数组arr[9][9]我们在棋盘上布置了雷,棋盘上雷的信息和非雷的信息,假设我们排查了某一个位置后,这个坐标处不是雷,这个坐标的周围有1个雷,那我们需要将排查出的雷的数量信息记录存储,并打印出来,作为排雷的重要参考信息的。,但是这样做棋盘上有雷和非雷的信息,还有排查出的雷的个数信息,就比较混杂,不够方便。原创 2024-09-14 22:19:04 · 933 阅读 · 30 评论 -
C语言三子棋解析
【代码】C语言三子棋解析。原创 2024-09-12 22:35:11 · 1012 阅读 · 23 评论 -
操作符详解下
即使有了操作符的优先级和结合性,我们写出的表达式依然有可能不能通过操作符的属性确定唯⼀的计算路径,那这个表达式就是存在潜在风险的,建议不要写花里胡哨的表达式,否则自己都会搞蒙。原创 2024-09-10 22:44:53 · 1535 阅读 · 56 评论 -
操作符详解(上)
在初学计算机时我们常常会听到2进制、8进制、10进制、16进制…这些听着非常高级的词语,其实8进制、10进制、16进制几乎和2进制非常相似,只是稍微有一些不同,下面我们对这些进行较详细的介绍。原创 2024-09-08 22:25:36 · 1574 阅读 · 47 评论 -
C语言函数介绍(下)
一般我们在使用函数的时候,直接将函数写出来就使用了。比如:我们要写一个函数判断一年是否是闰年。//判断⼀年是不是闰年return 1;printf("闰年\n");elseprintf("⾮闰年\n");return 0;printf("闰年\n");elseprintf("⾮闰年\n");return 0;//判断⼀年是不是闰年return 1;原创 2024-09-06 19:12:03 · 1131 阅读 · 21 评论 -
C语言函数介绍(上)
有时库函数并不能满足程序员自身的需要,因此有了自定义函数后,程序员可以自己创造属于自己的函数来满足自身需求。原创 2024-09-05 22:36:00 · 869 阅读 · 28 评论 -
C语言数组介绍(详解)
前面学习的数组被称为⼀维数组,数组的元素都是内置类型的,如果我们把⼀维数组做为数组的元素,这时候就是⼆维数组,⼆维数组作为数组元素的数组被称为三维数组,⼆维数组以上的数组统称为多维数组。有⼀个比较迷惑的点,变长数组的意思是数组的大小是可以使用变量来指定的,在程序运行的时候,根据变量的大小来指定数组的元素个数,而不是说数组的大小是可变的。所以我们得出结论:数组在内存中是连续存放的。我们知道数组中所有元素的类型都是相同的,那只要计算出⼀个元素所占字节的个数,数组的元素个数就能算出来。原创 2024-09-04 22:54:45 · 1796 阅读 · 27 评论 -
分支和循环以及猜数字游戏的实现
有的人可能会想,如果我们用for循环,然后定义一个整形数值i=0,让i在for循环中不断变化数值,这样是不是就可以解决这个问题了,但实际上,我们知道for循环需要一个i的范围,比如i<5,这个范围是具体的,因此循环也是有限的,循环最终会有结束的时候。注意:srand函数是不需要频繁调用的,一次运行的程序中调用一次就够了(因为程序中在调用 rand 函数之前先调用 srand 函数,通过 srand 函数的参数seed来设置rand函数生成随机数的时候的种子,所以只需要调用一次)原创 2024-09-03 16:00:00 · 1738 阅读 · 31 评论 -
C语言循环详解
0)则执行循环语句,执行完再根据表达式3调整循环变量,即i++之后i从0变为1,一直这样循环知道i大于或等于3为止,如果为假(为0),则直接跳出循环。for和while在实现循环的过程中都有初始化、判断、调整这三个部分,但是for循环的三个部分非常集中,便于代码的维护并且也更方便理解,而如果代码较多的时候 while 循环的三个部分就比较分散,所以从形式上 for 循环要更优⼀些。在 do while 循环中先执行图上的“语句”,执行完语句,在去执行“判断表达式”,判断表达式的。原创 2024-09-02 17:57:55 · 1350 阅读 · 33 评论 -
switch语句和while循环
句,如果某⼀个 case 语句的后边没有 break 语句,代码会继续玩下执行,有可能执行其他 case语句中的代码,直到遇到 break 语句或者 switch 语句结束。在使用 switch 语句的时候,我们经常可能遇到⼀种情况,比如 switch 后的表达式中的值无法匹配代码中的 case 语句的时候,这时候要不就不做处理,要不就得在 switch 语句中加入default 子句。1.要想得到n的最低位,可以使⽤n%10的运算,得到的余数就是最低位,如:1234%10得到4。如果找不到对应的值,原创 2024-09-01 10:19:12 · 1822 阅读 · 37 评论 -
if语句介绍
上面的代码排版,让 else 和第⼀个 if 语句对齐,让我们以为 else 是和第⼀个if匹配的,当 if语句不成立的时候,自然想到的就是执行 else 子句,打印 haha ,但实际上 else 是和第二个 if进行匹配的,这样后边的 if…else 语句是嵌套在第⼀个 if 语句中的,如果第⼀个 if 语句就不成立,嵌套 if 和 else 就没机会执行了,最终什么都不打印。在C语言中,0为假,非0表示真,也就是表达式的结果如果是0,则语句不执行,表达式的结果如果不是0,则语句执行。原创 2024-08-29 17:32:36 · 1251 阅读 · 6 评论 -
算数、赋值、单目操作符介绍
运算符 - ⽤来改变⼀个值的正负号,负数的前⾯加上 - 就会得到正数,正数的前⾯加上 - 会得到负数。这个过程为:a原来是10,先使⽤,就是先赋值给b,b得到了10,然后再+1,然后a变成了11。++是⼀种⾃增的操作符,⼜分为前置++和后置++,–是⼀种⾃减的操作符,也分为前置–和后置–C语⾔中还有⼀些操作符只有⼀个操作数,被称为单⽬操作符。这个过程为:a原来是10,先+1,后a变成了11,再使⽤就是赋值给b,b得到的也是11。其实是有个规定:除号的两端如果是整数,执⾏的是整数除法,得到的结果也是整数。原创 2024-08-28 18:58:59 · 1060 阅读 · 1 评论 -
C语言数据类型
1、数据类型关键字2、控制语句关键字3、存储类型关键字4、其他关键字字符我们可以理解为计算机所使用的数字、字母、符号…这些我们可以通过电脑键盘敲出。C语言的字符用’’ 括起来,比如:‘a’ 、‘1’ 、 ‘@’ …而字符我们也常常通过%c来进行格式的指定以及用printf函数将字符打印出来。ASCII码是为了让大家将每个字符按照一个规定标准进行编写二进制序列,方便沟通。常用字符的一些ASCII码值如下字符A~Z的ASCII码值从65 ~90。原创 2024-08-27 10:43:49 · 1181 阅读 · 3 评论 -
“main函数”以及“printf函数和库函数”的理解
上面这样写有很多问题,后面我在网上搜了一下main函数的返回值必须为int 类型,这是我搜的结果所以我这样写完全就是吃饱了没事干写着玩的,建议老老实实的正常写。原创 2024-08-26 12:35:31 · 1251 阅读 · 1 评论