不少朋友在学习C语言的时候都会遇到一些关于什么算法的问题,今天呢,我就来写一下,一个简单的算法,和一个面试题,和一些昨天我在学习中遇到的知识点面试
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.浅絮指针ide
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的地址,可是后边复制的元素会改变指向地址的值得。 (宏定义,这篇就不说了,定义常量会在下篇说)