首先,我的博客地址是http://www.cnblogs.com/naiwenmoer/,這也是我第一篇博客,以前沒想過寫博客,現在有幸加入這個大神遍地飛的園子,還請各位大神多多指教了! c語言作為經典語言,這裡不再多說了.咱從基礎一起探討吧! 一. 定義一個整型,如果作為局部變...
首先,我的博客地址是http://www.cnblogs.com/naiwenmoer/,這也是我第一篇博客,以前沒想過寫博客,現在有幸加入這個大神遍地飛的園子,還請各位大神多多指教了!
c語言作為經典語言,這裡不再多說了.咱從基礎一起探討吧!
一. 定義一個整型,如果作為局部變數,沒有初始化的情況下,它是一個隨機的值的,一般情況下輸出會是0,但這個0是作為垃圾值的;而如果作為全局變數,沒有初始化的情況下,它的值是0.
二.我們都知道,static是用於聲明一個內部全局變數,在使用static的時候,並不會在記憶體中重新開闢一塊存儲空間的,那麼它的優越性是時候發揮作用了,如果當某個方法的調用頻率非常高,而該方法中有寫變數的值是固定不變的,如果我們使用static來修飾該變數,讓該變數只開闢一次存儲空間,在運行過程中就可以提高程式的效率和性能了.
三.帶參數的巨集定義一些細節.如果說我們使用一個帶參數的巨集定義去做一些簡單的運算,少量的代碼可能顯示不出他的優越性,但在成千上萬行代碼中,能為整個軟體程式運行提高不少性能勒! 例如一個簡單的例子,int a = 10;int b = 20;計算結果可以int res = a + b;使用巨集定義應該這樣的:在main函數外面先#define SUM(v1,v2)(v1+v2) 在main函數裡面直接實現 int res = SUM(a,b); 看似沒有區別,從運行原理來看,巨集定義讓程式運行的直接拿到的是(10 + 20)去運算,而沒有使用巨集定義要先讓a和b分別賦值後再運算,是多走了一步"彎路"的.
四.提到巨集,應該會想到typedef,define和typedef中有一些細節,可能有些朋友不會註意到,如果說要給指針類型變數"起別名",當使用define的時候會有什麼"意外"發生呢? 好,我先來一個#defiine MY_STRING char * 在main函數裡面調用MY_STRING name1,name2; 會出現什麼後果呢,結果告訴你,會有bug的. 原因是因為MY_STRING name1,name2====char *name1;char name2; 我個人通俗點說,就是name2"吃不到*",作為指針變數,沒有*運行當然會報錯了!
好了!時候不早了,就這樣了,有空想到什麼就再寫點什麼了!有不足之處還望各位看官指出,感激不盡!