Linux | 调试器-----GDB 在liunx中如何对一段代码去进行调试呢?此时就要使用到Linux下的调试器gdb了;对于这个调试器来说,不像是VS中那样的图形化界面形式,而是采用纯命令行的形式进行调试。GDB是一个由GNU开源组织发布的、UNIX/LIUNX操作系统下的、基于命令行的、功能强大的程序调试工具。对于一名Linux下工作的c/c++程序员,gdb是必不可少的工具。
分布式版本控制工具----Git 可以看到,里面就有本次【commit】修改后的版本号,而且还会显示出我们本次修改的日志。包括更多的还有上面配置的【用户名】和【邮箱】以及本次提交修改的时间,都是可以查询到的。第一次进行git push的话,就出现下面这样的警告提示⚠这点的话是由于你git push没有指定分支,只有当前分支会被 push 到你使用 git pull 获取的代码。再去【git push】一下就可以发现不会出现像刚才那样的问题,也就推送成功。会出现下面的情况,输入的账号、密码是你所注册时候的账号、密码。下面的就代表成功了。
Linux第一个小程序-进度条 因为打印的均为字符,那么10就算是有2个字符,所以我们每次在打印只需要预留出2个字符的位置就可以了,这样第一次打印10刚好占满两个字符的空间,后面在打印9 8 7...的时候虽然只有一个字符,但是还有一个预留的空间,所以就会把上一次打印的内容进行一个。我们将整体进度条看作是一个字符串,现在要实现从0% ~ 100%的进度条扩展,因为是字符串,最后结尾还有一个`'\0'`;在计算机内部,会将你输入的一些整型数字首先转换为字符串的形式,然后去遍历这个字符串,用putc()这个函数将字符一一地打印在显示器上。
项目自动化构建工具-make/Makefile make/makefile是什么?你们如果是到了那些大型工程中,编写具有上千、上万条代码,一次编译完成之后又修改源代码,接着再想进行编译,此时便需要重新敲入指令,工作就会变得繁琐。在VS中,我们可以无限地修改自己的代码,然后随时编译运行,不需要考虑这些复杂的原理。
Linux编译器-gcc/g++使用 gcc(GNU Compiler Collection,GNU编译器套件)是由 gnu 开发的编程语言 译器。gnu 编译器套件包括C、C++、Objective-C、Java、Ada 和 Go 语言前端,也包括了这些语言的库(如 libstdc++,libgcj等)。gcc 不仅支持 C 的许多“方言”,也可以区别不同的 C 语言标准;可以使用命令行 选项来控制编译器在翻译源代码时应该遵循哪个 C.静态库是指编译链接时把库文件的代码全部加入到可执行文件中因此生成的文件比较大。
liunx中yum,rzsz及开发工具(vim) vi(visual editor)编辑器通常被简称为vi,它是Linux和Unix系统上最基本的文本编辑器,类似于Windows 系统下的notepad(记事本)编辑器。文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。该模式是我们后面用的最频繁的编辑模式。控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入。注意:在vim分屏模式下,光标在哪里,我们就在编写哪一个文件。以上只是关于vim的冰山一角,有想了解、精通vim的可以前往。还有许多其他的,可以在CSDN上自行搜索。
liunx权限(详解) 在liunx系统中,gcc是一款编译器,软件,不代表其他liunx系统上运行的其他软件系统不需要后缀,(把文件给别人需要征求别人的意见,但root不需要,直接 chown 用户名 文件名)文件的类型:liunx系统中文件名的后缀没有直接的含义。(当然:不代表不用)权限的位置是固定的,第一个是r 第二个是w 第三个是x。就像管理员(root)和普通用户,他们的所拥有的权限不同。向权限范围增加权限代号所表示的权限。向权限范围取消权限代号所表示的权限。向权限范围赋予权限代号所表示的权限。
c++命名空间 中,变量、函数、类等都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是。注意:当定义多个命名空间且域名一样时候,就像合并在一个域中,同一个命名空间里变量名冲突就会报错。域的顺序:局部域>全局域>展开的命名空间域(暴露在全局域) or 指定访问的域。1).直接展开会有风险,我们定义的如果跟库名一样就会报错。命名空间中的所有内容都局限于该命名空间中。3).建议指定访问,不要轻易展开命名空间。最先运行的是局部域里面的。中即为命名空间的成员。
进阶-指针 经判断条件符合,进入--vp;没有调整,在判断,则vp接着--,一直下去,直到vp到values[0]的地址,这时不满足判断条件,结束循环。允许指向数组元素的指针与指向数组最后一个元素后面的那个内存位置的指针比较,但是不允许与指向第一个元素之前的那个内存位置的指针进行比较。* *pa -- * 告诉我们*ppa是指针,int*说明pa指向是int*类型的数据。野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)。平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量。...
轻松玩转三子棋 先把主函数写出来:再从test函数里嵌套: 第五步:判断输赢游戏是过程,最终得有个输赢,结果有:玩家赢,电脑赢,平局然后输出结果,为了方便:玩家赢 输出 *电脑赢 输出 #平局 输出 Q如果还想接着玩就输出 C在test.c中while的循环里进行变动,经过刚开始的博弈后,玩家再下一次的时候进行判断,判断玩家是否赢了,如果赢了就break跳出,输出 * ; 如果玩家没赢,电脑下一次,判断电脑是不是赢了,如果是电脑赢
C语言数组 目录一维数组:一维数组创建:一维数组初始化:一维数组在内存中的存储:二维数组:二维数组的创建:二维数组初始化: 数组的越界:数组名: 冒泡排序:赋值1~10数组的大小也是可以计算的: 随着数组下标的增长,元素的地址,也在有规律的递增。 想打印出这个 int arr[3][5]={{1,2},{3,4},{5,6}};代码如下: 二维数组的存储:二维数组在内存中也是连续存放的。数组名: 如果顺序正确,那只是在交换,可以优化一下:以上
C语言函数 自定义函数也是像库函数一样由函数名,返回值类型和函数参数组成。 如:写一个两者比较大小值的函数。 交换整型变量的函数: 当实参传给形参的时候,形参是实参的一份临时拷贝,对形参的修改不会影响实参。swap1:在调用过程中,我们将a和b的数值传给了x,y。然后在函数内将x,y进行数值交换,但没有改变原来的a,b。因为x,y是形参,用完了就销毁的东西,仅仅是用于临时储存原来的数值,所以根本不能改变a,b的值。swap2:在调用过程中,传的是地址,将地址传给指针*px,*py。*px即a的地址,*py即
分支语句和循环语句详解 分支语句if语句if(表达式1)语句1;else if(表达式2)语句2;else if(表达式3)语句3;#define<stdio.h>int main (){ int score=0; csanf ("%d",&score); if(score>=60) printf ("及格"); else if(score>60&&score<80)printf ("优异")...