今日份学习“指针”本文简介: 该篇文章进一步讲解指针的运用方式,且如何避免野指针的出现。一,简单回顾:指针是一个变量,主要存放内存单元的地址,存放在指针中的值都被当成地址处理。在printf函数中以%p来输出打印十六进制数表示的地址。指针变量的大小,在32位系统上指针变量大小为4个字节 在64位系统上指针变量大小为8个字节无论该指针类型是什么,大小都一样!#include<stdi
今天你扫了嘛!!!!!前言:“扫雷”游戏想必大家都不陌生:每当电脑没网时,默默的打开Windows自带的扫雷,蜘蛛纸牌.....等小游戏。该文章以“扫雷”为主题,以"C语言"为例实现一个简简单单的扫雷游戏。下面进入主题:一,游戏框架在游戏设计前,首先要明确游戏的框架,功能例:扫雷在N*N的棋盘上有x个雷,玩家输入棋盘坐标:1,如果该坐标是雷“游戏结束”2,如果坐标不是雷,显示坐标周围雷的个数。直到
前言:知道如何玩三子棋游戏,肯定也知道如何实现三子棋游戏。该文章将 以"C"语言的形式一步一步解析“三子棋”游戏是如何实现的。用心完成就很简单哦~游戏框架平常所玩的三子棋游戏,是在一个棋盘上实现,按照一人一回合的走法去下棋,直到三连统一,或者棋盘饱满就结束游戏,按照这个思路把游戏的框架先构建起来。1,屏幕上呈现游戏菜单2,根据用户输入运行相应的选项3,游戏具有可玩性4,设置游戏属性5,游戏运作以上
今日份通达“函数栈帧”的创建与销毁前言: 在C语言中所定义的函数都是在栈上进行创建的,进入函数就是向内存的栈空间申请开辟一块空间(压栈),并在此空间里进行该函数相对应的操作,出了该函数就同时销毁释放该函数内所有的空间。大致的理论认识即使如此,但在内存的视角上”函数栈帧“的创建与销毁是如何的呢?补充:这里特别提示一点:该知识点在不同的编译器底下会有一些不同,但是在大致的逻辑思维上是相同的,这里
前言:链表对于大家来说并不陌生,这里还是有必要的介绍一下:为什么称之为”链表“呢?因为形成链表的基本结构就像链子一样,一节连着一节的相互关系,在我们内存中用该结构存储的数据只要知道其中一个数据的位置就能顺着找到其它位置的数据,这就是我们数据结构“线性表”的其一“链表”结构。一,基本形态每个节点由一个存储数据和指针组成,“指针”的作用是为了指向下一个节点,形成链接关系。首先了解单链表:逻辑图:解析:
前言:线性表:几个具有相同特性的数据元素的有限序列,线性表在逻辑上是线性结构,也就是连续的一条直线顾名思义“线性表”成一条线的表,在IT领域的数据结构中也有很多能看到的线性表,如“人员花名册”,“网络商品”,“图书名单系统”等等,都是一个个信息紧跟着排好供我们选择浏览等等~但这些结构的顺序是如何实现的呢?接下来该文章主要针对线性表其一的“顺序表”进行主要讲解?一,顺序表定义其本质就是数组,必须从头
今日份学习“内存函数”前言:当我们了解字符串相关函数可以对一系列的字符串进行操作,但这些函数只针对于字符串操作且太局限性了,所以为了破开这个局限性,该篇文章将介绍的函数就能解决这个问题。我们知道字符串相关的函数肯定是对字符串的每个字符进行操作控制的,每个字符且只占一个字节,所以每次操作访问都只针对一个字节的空间进行,就能对各个字符进行操作,但如果对其它类型的数据数组进行操作的话,就能不能达到我们想
今日份学习“结构体的内存对齐”前言:该篇文章主要讲解“结构体”在内存中如何存储?结构体的大小(字节)如何计算?如何更好的创建一个结构体?OK!开始我们的表演你认为的结构体的大小:struct s1 { char c1; int a; char c2; }; struct s2 { char c1; char c2; int a; };struct s1 a={0};,struc
一个人为什么要努力? 我见过最好的答案就是:因为我喜欢的东西都很贵,我想去的地方都很远,我爱的人超完美。、你必须非常努力,才能看起来毫不费力。、当你在荒废时间,有多少人在拼命。别在最该奋斗的日子,选择了安逸。、在你想要放弃的那一刻,想想为什么当初坚持走到了这里。、任何不走心的努力都是敷衍你自己。、再小的努力,乘以365都很明显。
今日份分享“杨氏矩阵”前言:该篇文章主要讲解杨氏矩阵的算法题。一,介绍什么是杨氏矩阵?解:杨氏矩阵是一个数组矩阵,矩阵从左到右,从上到下都是递增的。相当于二维数组存的值类似杨氏矩阵:arr[3][3]={1,2,3,4,5,6,7,8,9};二,要求编写程序找出杨氏中的某个数,并且要求时间复杂度小于O(N)。三,思路①如果用遍历法,则时间复杂度等于O(N)且不符合小于O(N)②以矩阵右上角的数与我
今日份学习“错误信息函数”前言:该文章介绍错误信息函数以及该函数在什么情况下使用,对我们有什么便利之处。strerror函数头文件:<string.h>功能:显示目前程序具体的报错信息,为程序员提高bug原因,方便程序员修改bug。格式:char* strerror(int errnum);解析:函数返回值:char* strerror返回错误码所对应的错误信息。该函数参数:int e
今日份学习“相关字符串的库函数”前言: 文章详细介绍C语言中的哪些库函数主要对字符串进行操作,以及作者将会得这些函数一一的进行分析讲解这些函数是如何实现的,使用这些函数的注意事项有什么,应对什么情景使用哪些函数。一,函数分类这些函数都被包含在<string.h>的头文件中且可分成以下几类:1.求字符串长度函数:strlen2.长度不受限制的字符串函数:strcpy,strcat,str
今日份练习“指针笔试题T6”前言:这题相对来说比较复杂一些,涵盖了数组,一级二级三级指针,且还有各种运算符号。下面我们进入正题:#include<stdio.h> int main() { char* c[] = { "ENTER","NEW","POINT","FIRST" }; char** cp[] = { c + 3,c + 2,c + 1,c }; char*** cp
今日份练习“指针和数组”试题练习4前言:考察指针数组的访问权T5:#include<stdio.h> int main() { char *arr[]={"work","at","alibaba"}; char**pa=arr; pa++; printf("%s\n",*pa); }✨先尝试自己解题~~~✨ ✨ 揭 ? 晓 ? 答 ? 案 ✨ ✨答案为“at”✨解析:1.
今日份练习“指针和数组”试题练习4前言:熟练对数组名与&数组名地址的操作性质,了解其指针是如何在二维数组中如何运动的。T4:#include<stdio.h> int main() { int arr[2][5] = { 1,2,3,4,5,6,7,8,9,10 }; int* p1 = (int*)(&arr + 1); int* p2 = (int*)(*(a
今日份练习“指针和数组”试题练习2前言:该题主要考察二维数组,以及数组指针的访问权限和指针计算。T3:#include<stdio.h> int main() { int arr[5][5]; int(*p)[4]; p=arr; printf("%p\n",&p[4][2]-&arr[4][2]); printf("%d\n",&p[4][2
今日份练习“指针和数组”试题练习2前言:对指针和二维数组中的理解运用,下面这题结合了逗号表达式,看你能否理解其中的奥秘?T2:#include<stdio.h> int main() { int arr[3][2]={(0,1),(2,3),(4,5)}; int *p=NULL; p=arr[0]; printf("%d",p[0]); return 0; }老样子先
今日份学习“qsort”函数前言:针对一个数组的元素进行排序,我们可以想到冒泡排序法,且如果将该排序法专门写入一个函数,需排序的数组调入其中是不是方便很多呢?且如果要实现这样的函数,我们需考虑哪些问题呢?(可以自己先想一想再往下看哦)一,实现条件C语言中“qsort”函数便是能实现各种数组排序的函数,来看他的实现条件1,返回值:qsort函数首先是无返回值的2,void* base:接收一个数组地
今日份练习“指针和数组”试题练习1前言: 熟练掌握指针在数组中具体是如何运动的,解题将以逻辑图的方式对此更清晰的理解。T1:#include<stdio.h> int main() { int arr[4] = { 1,2,3,4 }; int* ptr1 = (int*)(&arr + 1); int* ptr2 = (int*)((int)arr + 1); p
前言:了解const的使用情景const:const函数修饰变量时:1.const放在指针变量*左边时,修饰的是p,也就是说不能通过指针变量p来改变他所指向地址的值。例:const int *p=# 如果*p=20;//则会报错const修饰的是*p(地址所指的数)的值不可以通过p更改。2.const放在指针变量*右边时,修饰的是p本身,p所存储的值(地址
起笔人✒:秃了也强了?时间:2023.3.22前言:总结学习C语言的过程中,一些容易忽视的问题以及需要注意的代码情景~printf函数的打印格式字符型“char”:%c打印一个字符 %s打印一串字符整型“short”,"int","long","long long":%d打印有符号十进制无符号整型“unsigned int”:%u打印无符号十进制浮点型“float”,"d
今日份学习“VS实用调整技巧”前言:我们知道一名程序员的工作~百分之30的时间用来写代码,而百分之70的时间都在调试代码的BUG,光kuku写代码可不行,不能运行的话和白写有什么区别呢?所以呢调试代码是每一位程序员必备的技能,且能够得心应手的去调试才能使我们写的程序更有价值。一,什么是BUG当程序无法正常运行,说明其中有一块代码工作有问题我们则称其为BUG“IT界十大最有远见的人才”的唯一一位女性
今日份学习“野指针”本文简介:介绍野指针,什么情况会生产野指针,我们该如何避免野指针问题。一,定义野指针:是指针指向的位置是不可知的,随机的,不正确的,没有明确限制的。我们在main函数内部创建了一个指针变量但没有赋值,则它会被赋为随机值,随机指向一块内存空间,且这块空间我们并未开辟的话,如果调用了这个指针则会造成越界非法访问,且如果这块空间开辟了的话,如果在不知情下调用了这个指针则会对该空间的数
今日份学习“数据的存储”本文简介:C语言中的数据类型有整型,字符型,浮点型,以及结构体类型,我们知道这些类型是用来专门接收各个类型的数据的,但是这些类型的数据应该放在哪里呢?跟着这篇文章来一一探索。目录一,类型的意义二,类型家族三,整型在内存的存储方式四,浮点数在内存中的存储方式五,大端小段的概念六,总结一,类型的意义C语言中创建一个类型相当于在内存中开开辟了一块空间,而开辟多大的空间取决于是什么
今日份学习“结构体”本文简介:了解C语言结构体是什么,如何创建,如何使用以及使用方法有哪些。一,定义结构体是一个类型,它是针对于复杂对象的结合,是我们自己所创建的类型。结构是一些值的集合,这些值成为成员变量,结构的每个成员可以是不同的类型变量,其成员也可以是其它结构体。二,创建创建格式:结构体关键字 类型名字{ 成员1; 成员2; 成员3; ....;};例如我们对一个学生做为复杂对象进
今日份学习“操作符”本文简介:在文章的开头思考一个简单的问题“int a=5,int b=3,在不创建第三个变量的情况下如何交换a与b的值?“带着整个问题我们进入以下的内容:”操作符“一,操作符1.除法,取模除法符号:”/“ 计算机中两数相除结果为商,余数自然省略 除号两端数都为整数其结果必为整数取模符号:”%“ 计算机中两数取模结果为余数取模两
今日份学习“数组”的要点本文简介:该文章讲解数组的使用要点以及注意事项,了解其是如何运转的。为此加深使用数组的印象。数组详讲:数组是一组相同类型元素的集合。我们最常使用的数组有“一维数组”,“二维数组”,创建格式:类型 数组名[常量表达式];1.一维数组 ? :int arr[3]; 数组在创建时
今日份学习“函数”本文简介:了解C语言中的函数,如何有条理的使用创建函数,分别对函数的调用,函数的嵌套调用,函数的链式访问,函数的递归,函数的迭代进行一个概念性的了解。一,函数此函数非彼函数,不是跟数学函数一样,它被创造是计算机用来专门完成某个事情的,举个?:我们所熟悉的函数“printf”它就是专门的输出函数,将我们想的输出的数据打印到屏幕上。分类:?库函数:C语言本身所提供的函数(“pri
今日份学习”rand函数和srand函数“本文简介:相信大家都知道猜数字游戏吧,我想好一个1-100之间数然后你来猜,如果你猜的数比我想的数大,我则告诉你猜大了,比我想的数要小,则告诉你猜小了。看看谁能以最少的次数来猜对呢???下面我们带着这个游戏来进入代码?猜数字游戏:如何来制作这个游戏呢?我们先得想好大概的架构。我的思维:1.首先得有选择性游戏菜单。 2.能进行多次
今日份学习“循环语句”本文简介:我们所认知的摩天轮是一圈圈循环的反复转圈,今天这篇文章介绍的“循环语句”也与摩天轮相同,那它是如何生成和运转的呢?我们来看一看吧。一,循环语句C语言中循环语句共有三种:1.while语句2.do while语句3.for语句1.whilewhile的语法结构:while(表达式){ 语句;}表达式的真假和"if"的表达式相同,如果为真则执行其语句,不同的是"wh
Copyright © 2005-2023 51CTO.COM 版权所有 京ICP证060544号