不少朋友在學習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的地址,可是後邊複製的元素會改變指向地址的值得。 (宏定義,這篇就不說了,定義常量會在下篇說)