很多朋友在学习C语言的时候都会遇到一些关于什么算法的问题,今天呢,我就来写一下,一个简单的算法,和一个面试题,和一些昨天我在学习中遇到的知识点

  1. 给定一个数组,要你求出数组中的元素哪个是唯一的。(我就写出自己的理解,大家有兴趣的话,可以写一写代码哈)
    首先看到题目,说给一个数组求出唯一的数,那么我们可不可以认为,这个所谓的唯一的数,他就在数组里出现了一次? 如果是这样的就很好办啦,要做两个循环,每次循环的时候都要比对,是否与第一个相等。
    1)声明两个初始化变量,(由于c99的for循环标准,不能在使用的时候初始化变量)
    2)求出这个数组的大小,可以使用sizeof操作符,来求出数组的内存,
    基本原理是:
    sizeof(数组名)/sizeof(数组【0】) ------ 总内存大小/单个内存大小
    3)上一步可以得知,我们已经得出了数组的个数,那么就可以开始循环了,
    4)我们如何得出这个两个数是否相等,或者说是出现了几次呢? 这个时候就需要计时器了
    每次循环判断的两个元素相等的时候,计时器++,这样就可以求出,该元素在数组中出现了几次, 这种看似像 冒泡排序法。
    5)当计时器等于1 的时候,就说明当前这个元素在数组中出现了一次
    6)最后呢在第一个循环的后边,一定要清除第二个循环变量哦,不然会一直累加的。

2.接下来让我们来说一个面试题 :在不使用第三个变量的时候,如果交换a,b变量的值。

    1).首先看到这个题,我们可以立马想到,如果使用第三个变量的时候,这个题怎么解决呢?            假设,你有三个瓶子,把第一瓶子的东西放到,第三个瓶子里,  第二个瓶子的内存放到第一个瓶子里,  第三个瓶子的内容,放到第二个瓶子里,这样就可以实现 两个变量开始交换了。    2).那么这个题说不使用第三个变量,其实我们可以这样做。            还是假设,两个数字 a = 10;  b = 5;                    1).a = a + b;   那么此时的a就是这两个数的和                    2).b = a - b ;   总和-b的值,然后重新赋值给b  此时的b就是 10                    3).a = a - b;   同样的原理,这里就不说啦,     3).那么这么简单,你就会问了,这个我也会,这里要提前说一下抱歉,因为面试官不是考你这么简单的问题,同时 他还会问你,这个有没有提升的可能性            我们都知道,整型变量都会自己的内存大小的,超过内存大小的话,就会造成内存溢出,那么就这道题来说,如果解决溢出的问题呢?可以用逻辑异或的想法来做。            a = a^b;            b = a^b;            a = a^b;            这是以二进制来进行逻辑异或的,相同为0 ,相异为1;

3.那么接下来就说一说,昨天我在学习中遇到的我认为的知识点,

    1).外边引用变量  需要extern 关键字 在使用的时候需要声明他的类型,和变量名    2).static修饰局部变量的时候,会把他的声明周期变长。    3).static修饰全局变量的时候,会把他的作用域变成本文件内, 也就是说把 外部链接属性--->内部链接属性    4).typedef 类型重新定义  typedef  int  a,那么下边就可以直接a来定义变量的类型了。

4.浅絮指针

    1).我们都知道指针是C语言中中的一大难点,今天我就来跟大家谈一谈我对指针的 简单看法,(这只会说到指针简单的应用,并不会说太深,下篇博客会着重写指针);            在你的脑袋里想一下哈,比如你要找  xxx大学的 xxx系xxx班xxx学生,应该那么找勒是不是要先找到学校,系部,班级,还有学生名呢?  是不是想到这里,就有了一个地址的概念。            我们都知道一个字节是8个比特位,四个字节是整型变量能存放的最大的内存单元,                        当我们 int  a = 10; 是不是就意味的像内存申请了内存空间,    ,说到这里我就想问了,内存空间的地址是什么呢?  大家肯定都晓得撒,计算机只能识别二进制,0111010,从全0到全1,这类的数字,所以内存地址的编址方式,就是由这些比特位来组成的        那有多大呢?  一共是 2^32次方大小的地址,换算成十进制,很大大了,所以说整型变量还是很大的,    2).简单说一下什么是指针变量和解引用操作符                指针变量----存放一个变量地址的变量,               int  c = 10;                 int* a = &c;                 *a = 20;                 请问当前的c是多大?     解引用操作符是  本身存放的是变量c的地址,但是后边复制的元素会改变指向地址的值得。                (宏定义,这篇就不说了,定义常量会在下篇说)
©著作权归作者所有:来自51CTO博客作者盼夏的原创作品,如需转载,请与作者联系,否则将追究法律责任

更多相关文章

  1. 变量与常量
  2. volatile与synchronized的区别
  3. js基础、函数
  4. Windows系统中python的保姆级安装教程
  5. js的变量与常量、常用数据
  6. MGR用哪个版本?5.7 vs 8.0
  7. ACCESS中Dlookup函数使用
  8. Linux makefile使用基础
  9. 经典面试题(21):以下代码将输出的结果是什么?

随机推荐

  1. 高效的10个Pandas函数,你都用过吗?
  2. 利用query()与eval()优化pandas代码
  3. pandas参数设置小技巧
  4. 原来Python自带了数据库,用起来真方便!
  5. QGIS+Conda+jupyter玩转Python GIS
  6. jieba分词-Python中文分词领域的佼佼者
  7. 详解seaborn可视化中的kdeplot、rugplot
  8. JavaScript 风格指南 [每日前端夜话(0x1C
  9. 在模仿中精进数据可视化01:国内38城居住自
  10. 多快好省地使用pandas分析大型数据集