小白之路---C語言

不少朋友在學習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.淺絮指針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的地址,可是後邊複製的元素會改變指向地址的值得。

                (宏定義,這篇就不說了,定義常量會在下篇說)
相關文章
相關標籤/搜索