计算机基础问题
William_Tuo
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【转载】Linux 下 boost 库正确安装及测试
此篇为转载,原因是在安装过程中发现好多博客的安装教程并不全面,安装好之后不一定能正常使用。我是看了这篇博客之后,boost 库安装成功,并且可以正常使用。下面是链接:https://blog.youkuaiyun.com/a379039233/article/details/80493167原文中的 boost 库版本不是最新的 release 版,在此附上最新的 release 版本下载链接,我...转载 2019-10-22 13:30:33 · 923 阅读 · 0 评论 -
【C语言】结构体、联合,内存对齐规则总结
一、结构体1.1什么是结构体 在C语言中,结构体是一种数据结构,是C提供的聚合类型(C提供了两种聚合类型:数组和结构)的一种。结构体与数组的区别是:数组是相同类型的集合,而结构体可能具有不同的类型。 结构体也可以被声明为变量,数组或者指针等,用以实现较复杂的数据结构,它的成员可通过成员名来访问。1.2结构体的声明 结构的声明必须包含它的所有成员。它的完全声明如下...原创 2018-07-21 18:41:51 · 2004 阅读 · 0 评论 -
【C语言】详解函数指针
一、函数指针的概念 函数指针是指针变量。首先,它是一个指针,该指针指向函数。我们需要明白的是每一个函数在内存中都有它的一个地址,换句话就是说函数都具有一个入口地址,而这个入口地址就可以用一个函数指针来指向。 函数指针的既可以用来调用函数,也可以作为函数的参数来传递。二、函数指针的定义2.1普通的定义方法如下 下面的例子说明了定义一个函数指针的普通的方法,分析:pf先与...原创 2018-07-08 00:26:49 · 363 阅读 · 0 评论 -
【C语言】详解指针数组和数组指针
一、指针数组和数组指针的定义 指针数组:首先说明一点,它是一个数组,可以理解为存放指针的数组。举例:int *arr1[10] = {0}; char *arr2[10] = {0};//如果在32位的程序中,这里sizeof(arr1)和sizeof(arr2)它们的值都是40//元素类型都是指针,在32位的程序里面,指针类型变量占4个字节,故4*10 = 40。 ...原创 2018-07-07 20:37:25 · 1022 阅读 · 1 评论 -
【C语言】可变参数列表剖析
一、为什么函数要有可变参数列表 就举一个简单的例子来解答这个问题吧,具有一定C语言编程基础的读者,一定知道求两个数平均值的函数,实现过程很简单,我们只需要把两个参数传给函数,并用一个变量接收函数返回来的结果即可。 但是,我们都知道现实生活中,我们需要求平均值的情况有很多种,比如,当我想要求某个同学期末平均成绩,这个时候可能需要传的参数个数就不是两个了。 那么对于不同数...原创 2018-07-09 00:39:29 · 456 阅读 · 0 评论 -
【C语言】函数指针数组和指向函数指针数组的指针
一、函数指针数组1.1函数指针数组的声明 函数指针数组的声明如下,所谓函数指针数组就是在之前的函数指针的基础上增加了[],由于[]的优先级高于*,故 pf先与[]结合,说明它是一个数组,再与*结合说明数组中的元素的类型是指针,再看后面的参数列表,说明每一个指针都指向一个函数的入口地址,并且指向的函数的返回类型为int。int (*pf[])(int, int);1.2函数指针的使用 ...原创 2018-07-08 01:43:51 · 9849 阅读 · 3 评论 -
函数调用过程汇编逐句分析,栈帧的创建与销毁
首先,有一个问题,我们都知道,函数都可以被程序来的调用,那么main函数是谁调用的呢? 对于C语言来说,main函数是程序的入口,事实上,对于ELF可执行的文件它的入口点并不是main函数,而是_start。 下面介绍一下计算机内存的大体分布图: 需要注意的是,栈空间是由高地址向低地址空间增长,而堆空间是由低地址指向高地址空间增长。当我们用C语言用 mall...原创 2018-06-26 08:57:00 · 832 阅读 · 1 评论 -
【C语言】利用简单的移位实现将数字的二进制值从左到右反转
刚开始看到这个题目,很多的小伙伴是不是觉得首先需要将从键盘获取的十进制数转换为二进制,然后在通过首尾交换方法实现。 首先,要实现将二进制值从左到右反转,只需要依次获得低位的二进制值,并与高位对应的二进制值交换即可。比如:从右到左第一位与从左到右第一位交换,从右到左第二位与从左到右第二位交换,以此类推,从右到左第n位与从左到右第n位交换,并且当左边第n位与右边第n位相遇时停...原创 2018-05-31 20:39:38 · 4544 阅读 · 2 评论 -
通过位运算求两个数的平均值【原理分析】
首先,我们必须理解的是“任意一个二进制数都可以表示为各个位和其权值乘积的和的形式”。如果对二进制数不懂的话,可以参照下面十进制数:十进制数31 = 3*10^1 + 1*10^0对于这里的3,它的权值为10^1,而1的权值为10^0二进制数0110(即十进制数6) = 0*2^3 + 1*2^2 + 1*2^1 + 0*2^0同理,最左边的0它的权值为2^3,从左往右第...原创 2018-05-29 18:37:27 · 2213 阅读 · 1 评论 -
【C语言】三子棋强化(可改为五子棋,也可改变棋盘大小)
对于三子棋,我们再熟悉不过了,它的规则我们大家都知道,首先向读者展示一下我的代码运行效果,由于背景是黑色的原因,白棋是图片中黑色的笑脸,对应于ASCII码值为1,黑棋是图片中白色的笑脸对应于ASCII码值为2。 在此我说明一点,我并没有把使电脑聪明的算法写进去,读者有兴趣可以自己添加,只需要用算法改写(电脑走)函数即可。//电脑走void RobotMove(char bo...原创 2018-05-28 20:04:12 · 1932 阅读 · 0 评论 -
C语言数组总结
一、数组的概念 由一系列类型相同的元素构成。二、数组的声明 数组声明中包括数组元素的数目和元素的类型。编译器根据这些信息创建合适的数组,数组元素可以具有同变量一样的类型。下面是数组声明的例子:int main(){ int arr[20]; char code[12]; float candy[50];}三、数组的初始化 程序中经常会用数组来...原创 2018-05-22 23:47:10 · 1251 阅读 · 0 评论 -
C运算符总结
一、运算符是什么? 运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。例如:2+3,其操作数是2和3,而运算符则是"+"。在vb2005中运算符大致可以分为5种类型:算术运算符、连接运算符、关系运算符、赋值运算符和逻辑运算符。 二、c运算符的分类 算术运算符:+ - * / 关系运算符:> < >= ...原创 2018-05-11 20:09:03 · 461 阅读 · 0 评论 -
解决编译器出现以下中文乱码问题
刚开始的时候,我的编译器(我用的编译器是visual studio 2017)出现这种中文乱码,我真的是煞费苦心,在网上寻找了许多解决方法都没能解决。 我一直以为都是因为我用的编译器出现bug了,最后才发现跟人家的编译器没有半毛钱关系,解决方法很简单:“开始->运行->输入 "cmd" ,打开 DOS 窗口,在上方的拖动栏(就是用鼠标按住...原创 2018-05-10 10:02:03 · 11943 阅读 · 7 评论
分享